转自: Git教程 - 廖雪峰的官方网站 (liaoxuefeng.com)
目录
创建与合并分支
每次提交,Git都把它们串成一条时间线,这条时间线就是一个分支。上图只有一条时间线,在Git里,这个分支叫主分支,即master
分支。HEAD
严格来说不是指向提交,而是指向master
,master
才是指向提交的,所以,HEAD
指向的就是当前分支。 每次提交,master
分支都会向前移动一步,这样,随着你不断提交,master
分支的线也越来越长。假定已有分支线如下:
当我们使用
git checkout -b dev
git checkout
命令加上-b
参数表示创建并切换,相当于以下两条命令:git branch dev
git checkout dev
创建一个新的分支dev时,Git新建了一个指针叫dev
,指向master
相同的提交,再把HEAD
指向dev
,就表示当前分支在dev
上:
用git branch
命令查看当前分支
从现在开始,就可以在dev
分支上使用git add和git commit正常提交,对工作区的修改和提交就是针对dev
分支了,比如新提交一次后,dev
指针往前移动一步,而master
指针不变:
dev
分支的工作完成,我们就可以切换回master
分支:
git checkout master
再把dev
分支的工作成果合并到master
分支上:
git merge dev
Git怎么合并呢?最简单的方法,就是直接把master
指向dev
的当前提交:
合并完分支后,甚至可以删除dev
分支:
git branch -d dev
删除dev
分支就是把dev
指针给删掉,删掉后,我们就剩下了一条master
分支:
switch
我们注意到切换分支使用git checkout <branch>
,而前面讲过的撤销修改则是git checkout -- <file>
,同一个命令,有两种作用,确实有点令人迷惑。
实际上,切换分支这个动作,用switch
更科学。因此,最新版本的Git提供了新的git switch
命令来切换分支:
创建并切换到新的dev
分支,可以使用:
git switch -c dev
直接切换到已有的master
分支,可以使用:
git switch master
使用新的git switch
命令,比git checkout
要更容易理解。