Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

以下是我的Git小总结,希望可以 帮助到大家!!!

(新手入住,喜欢的点个关注,持续更新小总结,日常在线,可交流学习!!!)


GIt认识

(分布式版本控制系统)

Git 是一个开源的分布式版本控制系统,用于敏捷高效地处理任何或小或大的项目。

Git 仓库就是那个.git 目录,其中存放的是我们所提交的文档索引内容,Git 可基于文档索引内容对其所管理的文档进行内容追踪,从而实现文档的版本控制。.git目录位于工作目

Git库中由三部

1) 工作目录:用户本地的

2) Index(索引):将工作目录下所有文件(包含子目录)生成快照,存放到一个临时的存储区域

3) 仓库:将索引通过commit命令提交至仓库中,每一次提交都意味着版本在进行一次

Git安装

$ yum -y install git 		//安装git
$ git –-version 		 	//验证

Git使用

url:.git/config      //全局配置

//配置使用git仓库的人
git config --global user.name "YOUR NAME"   

//配置使用git仓库的人员邮箱
git config --global user.email "YOUR EMAIL ADD\RESS" 

Git的工作方式

分为集中式工作流、功能分支工作流、Gitflow工作流和Forking

其中集中式工作流和功能分支工作流是已经使用过的,Gitflow和Forking两种工作流暂时没有使用过。

这里仅简单认识一下工作方式,具体详情访问:http://小崔笔记之<Git的工作方式>

创建仓库

Git init 初始化本地版本库

创建了一个.git文件夹,隐藏的.git文件夹就是版本库:所有的本地配置和修改都存储在这里。  

git init

// 重置当前用户名密码
git config --system --unset credential.helper

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

Git touch创建文件

在存储库中创建一些东西:(创建文件的两种方式)

 Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

Git status查看状态

运行git status,我们会看到新创建的未被追踪的文件。

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

use “git add” to track 		//使用   "git add"	指令对文件进行追踪
No commits yet					//还没有提交
untracked files   				//未追踪文件

Git add添加文件到暂存区

根据提示(use “git add” to track ),我们添加文件

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

通过 git status 查看得知此时文件已经被添加了(又称staged),但还没有提交,仅仅存在暂存区中。

Git commit -m提交

为了记录这些变化,我们来提交它。

git commit -m "add.txt"            // "xx"指定提交暂存区的内容
On branch master						// 在master的分支上
nothing to commit, working tree clean	// 没有提交 

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

Git Show(显示提交内容)

查看本地代码状态,是否有待提交的代码

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

Git log日志(提交历史记录)

检查提交历史记录

$ git log		//指令
author      //作者
date        //日期
commit	    //提交
git log                         // 查看提交历史
git log -p              		// 查看指定文件的提交历史
git blame                		// 以列表方式查看指定文件的提交历史

 Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

优化日志(看着更舒服 没别的优点)

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

Git mv -m工作区文件更名

git mv -m (NAME) (newNAME)

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

Git rm工作区文件删除

git rm (文件名)	//删除指定文件
git status		//查看状态

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

使用git怎么撤销本地(工作区)修改,暂存区修改,版本区(本地仓库)修改,以及远程仓库的提交

什么是修改?
比如你新增了一行,这就是一个修改,删除了一行,也是一个修改,更改了某些字符,也是一个修改,删了一些又加了一些,也是一个修改,甚至创建一个新文件,也算一个修改。

1、未使用git add 的时候----在工作区

git checkout -- (filepathname)     //放弃修改某个文件
列如 :  git checkout -- a.txt
git checkout .  	//放弃所有修改的文件
git restore  .		//放弃所有修改的文件

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

 2、已经使用git add 的时候----在暂存区

git reset HEAD filepathname		//恢复某个文件到工作区
例如:			git reset HEAD a.txt
git reset HEAD .	//恢复所有文件到工作区
git reset		//恢复所有文件到工作区

注意:这里只恢复到工作区,如果想放弃修改的代码还需要执行步骤1(工作区)中的操作

3、已经使用git commit提交的了代码----在版本区(本地仓库)

//1、如果你想全部撤回并回到远程仓库最新的状态(不保存代码修改)
	1、git reset --hard HEAD^ //回退上一次commit的状态
		//或git reset --hard commit_ id //回退某个版本+id号就行
	2、gitpull//拉取一下远程最新的
//2、如果你想拉回工作区并保存修改。只撤销commit 和add( 保存代码修改)
	git reset -- mixed HEAD^
	//或
	git reset HEAD^
//3、如果你想撤销commit但是不撤销add(保存代码修改)
	git reset --soft HEAD^ //只撤销了git commit;
	//修改后的代码还在暂存区
//4、终极版,由于你太懒,不管是暂存区,版本区,你只想撤销修改并回到远程最新的版本(不保存代码修改)
	1、git fetch --all
	2、git reset --hard origin/master //git reset --hard origin/远程分支名
//注意:这里只在暂存区和版本区哦

注意:只有修改并添加到缓存区才能提交到版本库

Git 如何撤销已被放入暂存区的文件

在执行完 git add 命令之后,我们的文件就会被放入了暂存区

1.注意最后的一个".",这条命令帮助我们一次性撤销所有放入暂存区的文件

git reset HEAD -- .

2.撤销指定目标文件

git reset HEAD -- filename

3.撤销指定目标文件

git rm --cached filename

以上三种方法只是把文件从暂存区中删除了(或者叫撤销了),并不会修改文件内容,也不会删除文件,在本地夹里还能找到。撤销后的文件状态是未被暂存的状态。

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

永久删除文件+暂存区

另外,git rm -f filename命令,也能把文件从暂存区删除,但是此命令也同时删除了本地文件,回收站中也找不到了,提醒广大同胞,慎重使用此命令来撤销暂存区的文件。=

$ git rm -f filename

Git创建分支

1.切换到基础分支(一般master分支)

$ git checkout master						//checkout切换分支

2.创建并切换到新分支

$ git checkout -b newBranch				//newBranch创建的新分支名

3.更新分支代码提交

$ git add * 
$ git commit -m "init newBranch"
$ git push origin newBranch

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

Git如何查看与切换分支

查看所有分支

$ git branch -a

查看当前使用分支(结果列表前面*号,代表当前使用的分支)

$ git branch

切换分支

$ git checkout 分支名字

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

创建远程分支

创建连接 连接远程仓库 地址仓库上面有 操作前需先连接 一次即可

$ git remote add origin 地址(git地址)

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

 查看连接,出现如图所示,便代表连接成功了

$ git remote -v

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

 删除连接(查看连接什么都没出来代表已经删除成功了)

$ git remote rm or origin

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

 第一次提交到远程仓库

$ git push -u origin [分支名称]

非第一次提交

$ git push origin 分支名称

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

Git branch -d删除分支

删除指定分支 -d 后

$ git branch -d branchName

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

合并分支

$ git merge dev

假如我们现在在dev分支上,刚开发完项目,执行了下列命令:

git  add .				-- >暂存区
git  commit -m '提交的备注信息'		-->分支
git  push -u origin dev			-->远程仓库

想将dev分支合并到master分支,操作如下:

1、首先切换到master分支上

$ git  checkout master			//切换分支

2、如果是多人开发的话 需要把远程master上的代码pull下来

$ git pull origin master			//保证主代码完整性
//如果是自己一个开发就没有必要了,为了保险期间还是pull

3、然后我们把dev分支的代码合并到master上

$ git  merge dev			//合并dev分支打到master上

4、然后查看状态及执行提交命令

$ git status			//查看状态

On branch master
Your branch is ahead of 'origin/master' by 12 commits.
  (use "git push" to publish your local commits)
nothing to commit, working tree clean

//上面的意思就是你有12个commit,需要push到远程master上 
> 最后执行下面提交命令
git push origin master			//覆盖之前主分支代码

5其他命令

//更新远程分支列表			
$ git remote update origin --prune

//查看所有分支
$ git branch -a

//删除远程分支Chapater6
$ git push origin --delete Chapater6

//删除本地分支 Chapater6
$ git branch -d  Chapater6

克隆分支(下载分支内文件)

在想要的克隆的文件直接右键打开 Git Bash Here 输入下方代码 既可克隆

$ git clone 地址 (git地址)

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

删除远程分支

仅删除远程仓库的分支 本地仓库任然存在

$ git push origin --delete [分支名称]

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

 

GIt的tag了解

Git 中的tag指向一次commit的id,通常用来给开发分支做一个标记,如标记一个版本号

1.tag 是什么?

tag , 翻译过来是标签的意思,顾名思义,标签是为了标记某种事物。 
tag 是 Git 版本库的一个快照,指向某个 commit 的指针。

2.使用tag 的好处?

tag 的存在,是因为我们需要这种标记的功能。目前的项目开发中,当发布版本时 tag 就派上用场了。例如 v1.0.1,v1.0.2… 
另外,git 提供了 tag 的增删改查一系列操作,在 tag 的使用上,可谓非常之方便。

3.tag 和 branch 的区别以及使用场景?

tag 对应某次 commit, 是一个点,是不可移动的。 
branch 对应一系列 commit,是很多点连成的一根线,有一个HEAD 指针,是可以依靠 HEAD 指针移动的。

两者的区别决定了使用方式,改动代码用 branch ,不改动只查看用 tag。

tag 和 branch 的相互配合使用,有时候起到非常方便的效果,例如 已经发布了 v1.0 v2.0 v3.0 三个版本,这个时候,我突然想不改现有代码的前提下,在 v2.0 的基础上加个新功能,作为 v4.0 发布。就可以 检出 v2.0 的代码作为一个 branch ,然后作为开发分支。

Git的tag使用

创建 tag 是基于本地分支的 commit,而且与分支的推送是两回事,就是说分支已经推送到远程了,但是你的 tag 并没有,如果把 tag 推送到远程分支上,需要另外执行 tag 的推送命令。

1.创建标签:

$ git tag -a version -m "note"
//注解:git tag 是打标签的命令,-a 是添加标签,其后要跟新标签号,-m 及后面的字符串是对该标签的注释。

2.推送标签到远程仓库

$ git push origin <tagName>
//注解:就像git push origin master 把本地修改提交到远程仓库一样,-tags可以把本地的打的标签全部提交到远程仓库。
 
//若存在很多未推送的本地标签,你想一次全部推送的话,可以使用一下的命令:
$git push origin --tags  

3.删除标签

$ git tag -d tagName
//注解:-d 表示删除,后面跟要删除的tag名字

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

 4.删除远程标签

$ git push origin :<tagName>
//注解:就像git push origin :branch_1 可以删除远程仓库的分支branch_1一样, 冒号前为空表示删除远程仓库的tag。

5.查看标签

查看本地某个 tag 的详细信息:

$ git show <tagName>				查看标签信息		

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

 查看本地所有 tag

$ git tag 或者 git tag -l

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

 查看远程所有 tag

$ git ls-remote --tags origin

日志形式查看tag信息

$ git log --pretty=oneline //查看当前分支的提交历史,里面包含 commit id

Git使用<暂存区+分支(branch)+远程仓库(remote)+克隆(clone)+Tag标签.....等>超详细教程

6.重命名标签

这个本质上是删除掉旧名字 tag ,然后再新建新名字 tag ,然后实现重命名的作用。

如果 tag 只存在本地,那么只需要删除本地的旧名字 tag ,然后新建新名字 tag:

$ git tag -d <oldTagName>
$ git tag <newTagName>
$ git push origin <newTagName> //推送到远程仓库

若已经推送到远程了,那么不仅要删除本地的,还要删除远程的,再重新创建和推送:

$ git tag -d <oldTagName>
$ git push origin :<oldTagName>
$ git tag <newTagName>
$ git push origin <newTagName> //推送到远程仓库

7.检出标签

$ git checkout -b <branchName> <tagName>
//因为 tag 本身指向的就是一个 commit,所以和根据 commit id 检出分支是一个道理。

注意:如果我们想要修改 tag 检出代码分支,那么虽然分支中的代码改变了,但是 tag 标记的 commit 还是同一个,标记的代码是不会变的

Git到这里就结束啦,以上是我(萌小崔)的Git总结! 我平时比较喜欢写一些笔记做一些总结,以后我也会持续更新我的小总结!希望可以帮到大家!感谢支持

QQ:2097113175

vx:cxljy328

Thans!!

上一篇:linux command lsusb


下一篇:关于git提交代码 提示fatal: remote origin already exists的问题