分支管理
开始的时候,只有一条主分支,即master
分支,master
分支是一条线,git用master
指向最新的提交,再用HEAD
指向master
创建/合并分支
创建新的分支时,如dev
,Git新建了一个指针dev
,指向master
相同的提交,再把HEAD
指向dev
,这样就表示当前分支在dev
上
之后再对dev
分支进行修改时,dev
指针就往前移动,但是master
指针不变
当需要合并时,只需要将master
指针重新指向dev
的当前提交,就完成了合并
git checkout
$ git checkout -b devSwitched to a new branch 'dev'
git checkout
命令加上-b
参数表示创建并且切换,相当于以下两条命令
$ git branch dev$ git checkout dev
在新版本的git中,提供了一种新的命令来切换分支:git switch
$ git switch -c dev$ git switch master
第一行表示创建并切换到新的dev
分支,第二行命令表示直接切换到已有的master
分支
git branch
git branch
命令会列出所有分支,当前分支前面会表一个*
$ git branch* devmaster
之后便可以在dev
分支上进行工作,执行add、commit等命令
如果dev
分支上的工作完成,那么可以继续用checkout
命令来切换回到master
分支,但是需要注意,仅仅这样做的话在dev
分支上做的更改会消失!所以我们需要用一条命令来将指定的分支合并到当前分支
git merge
$ git merge dev
合并完成之后,就可以删除dev
分支了
**注意:**合并过程中可能出现类似下图出现的冲突情况,此时需要手动解决冲突,才能继续合并
通常在合并分支的时候,Git会用Fast forward
模式,但这种模式下,删除分支后不会保留历史信息,如果强制禁用Fast forward
模式(方式是加入--no-ff
参数),GIt会在merge时生成一个新的commit,保留历史信息。
$ git merge --no-ff -m "no-ff" dev
使用这一命令,merge之后:
储藏(stach)
如果当前分支还有工作没有完成,不能够commit,但是又必须要在master
分支来完成一个更紧急的工作(如修复一个紧急bug),那么可以用git stash
命令来把工作现场储藏起来,然后去修复bug,修复完成后,再用git stash pop
命令,回到工作现场。
在master分支上修复的bug,如果想合并到当前分支,可以用git cherry-pick <commit>
命令,把bug提交的修改”复制“到当前分支
删除分支
如果要丢弃一个没有被合并过的分支,可以通过git branch -D <name>
命令来强行删除。
$ git branch -D feature
推送分支
git remote
要查看远程库的信息,可以使用git remote
命令
如果要推送某个分支,如dev
分支:
$ git push origin dev
标签管理
创建标签
在Git中打标签,首先要切换到需要打标签的分支上:
$ git checkout master
git tag
然后,就可以用git tag <name>
命令来打一个标签
$ git tag v1.0
可以用git tag
命令查看所有标签
默认标签是打在最新提交的commit上的,如果想要打在其他commit上,需要找到历史提交的commit id,然后再打上标签,如对id为f52c522的commit
$ git tag v0.5 f52c522
删除标签
$ git tag -d v1.0
该命令可以删除标签’v1.0’
推送标签
命令git push origin <tagname>
可以推送一个本地标签
命令git push origin --tags
可以推送全部未推送过的本地标签
参考资料:/wiki/896043488029600
如果觉得《Git学习笔记(二)——Git的分支管理 储藏和标签》对你有帮助,请点赞、收藏,并留下你的观点哦!