分支管理
master分支
在版本回退中,已经知道,每次提交,Git都将他们串成一条时间线,这条时间线就是一个分支。Git中有条主分区叫做master,当创建版本库的时候Git默认创建。HEAD严格讲不是指向提交,而是指向master,master才是指向提交的,因此HEAD指向当前分支,如图4.1所示,表示master和HEAD指针所指向的分支。
图4.1
一开始,master是一条线,Git用master指向最新提交,然后用 HEAD指向master,就能确定当前分支。
每次提交master都向前移动一步,随着提交过程中,master分支会越来越长。
临时分支
1.新建临时分支
当我们创建新的分支,例如dev时,Git新建了一个指针叫做dev,指向master的提交,并且将HEAD指针指向dev,表示当前分支在dev上,工作区没有任何变化。(HEAD总是指向当前分支)。如图4.2所示,表示新建分支dev,并且指向当前分支。
图4.2
新建分支命令:
<span style="font-size:14px;">$ git checkout -b dev</span>
-b 表示新建并且切换到dev分支从现在起,一切所做的工作都是在dev分支上进行,master分支是没有更新的,以后的修改和提交都是对dev分支操作,提交一次,dev指针向前移动一次,master指针不动。如图4.3所示,在dev分支上提交,指针向前移动。
图4.3
2.如何将dev合并到master分支上?
首先切回到master分支上
用git branch命令查看当前分支,打印信息如下所示。
<span style="font-size:14px;"> *dev
master</span>
该命令会列出所有分支,*号表示当前分支。
使用$git checkout 分支名切换分支。如下所示,切换到master分支。
<span style="font-size:14px;">$ git checkout master</span>
当切到master分支后会发现,之前所做的工作不见了,因为都是在dev分支上所做的,而在master分支上并没与提交,因此可以将dev的提交合并(merge)到master分支上。
使用$git merge 分支名 ,将该分支合并到当前分支。
<span style="font-size:14px;">$ git merge dev</span>
合并完成,需要删除临时分支dev,使用$git branch -d 分支名命令删除。
<span style="font-size:14px;">$ git branch -d dev</span>
建议:
Git建议多是用临时分支来完成整个项目的开发,这和直接在master上的工作效果是一样的,但是更安全。
小结:
查看分支:git branch
创建分支:git branch <name>
切换分支:git checkout <name>
创建+切换分支:git checkout -b <name>
合并某分支到当前分支:git merge <name>
删除分支:git branch -d <name>