Git使用详细教程(8):Git分支

建立分支

当咱们使用git init projectName命令的时候,Git就会默认帮咱们建立一个分支,名字叫作master。git

咱们还能够建立其它分支,使用git branch new_branch(新分支名称)shell

若是咱们想在建立新分支的同时,并切换到新建的分支,须要加上额外的参数-b,使用git checkout -b new_branch(新分支名称),它等同于下面的两条命令3d

git branch new_branch
git checkout new_branch

查看分支

能够经过以下命令查看当前所处分支指针

git branch

切换分支

当咱们从一个分支切换到另外一个分支,能够使用以下命令code

git checkout another_branch(另外一个分支)

例如,从master切换到dev分支blog

删除分支

删除分支命令it

git branch -d de_branch(待删除分支名)
git branch -D de_branch(待删除分支名)

-d-D有啥区别呢,若是你想删除的分支的内容已经合并到主分支了,那么使用-d便可,若是你在新分支上写了东西,可是并无合并到主分支,你还想把它删除,你就得使用-D,Git这样作是为了保险起见,怕你忘了合并就删除了,可是若是你确实是想还没合并就删除了就能够使用-Dast

下图中,我再bug567分支作了一次提交操做,可是并无合并到其它分支,在使用git branch -d bug567时,提示dev分支并无合并,若是确实想删除它,能够使用git branch -D bug567class

注意,咱们不能删除咱们当前所处的分支,什么意思呢?若是咱们当前处于dev分支,咱们经过git branch -d dev是没法删除dev分支的,须要先切换到其它分支,再去删除这个dev分支,由于若是你当前处于dev分支,你还把它给删除了,那么你当前该处于什么分支呢?这是不合理的,因此Git也不容许bug

分支合并

当咱们在一个分支上写好代码后须要把代码合并到主分支,这里须要用到git merge命令,下图给出了示例,dev分支里index.txt有两行文字,而master分支index.txt里只有一行,这里吧dev分支的内容和master分支的内容合并,先切换到master分支,而后执行以下面命令

git merge dev

git branch -v

显示当前所处分支,最新的一条提交消息

探寻分支本质

分支

下图是一个分支上由commit id组成的记录线

HEAD保存在哪里呢?

上面图中的这种也叫作fast-forward,快进,这是在没有冲突的状况下,从某一个提交直接跳转到最新的一个提交上。

若是有冲突的话,咱们须要在主分支把冲突解决,而后再commit。此时若是咱们切换到dev分支,再执行git merge master时,也不会冲突了,而是fast-forward,此时咱们再查看dev分支最新的commit id会发现和刚刚在主分支最新的commit id同样,dev分支只是采用了fast-forward方式更新了commit id,道理很简单,由于在master咱们解决冲突后作了提交, master已经往前走了一步了,而后咱们把往前走了一步的master再往回合并的话,此时实际上dev分支已经落后于master,git会认为这是一个快进,因此直接有指向dev的指针直接指向下一个master所指向的最新commit,直接就跳过去了。

下图这种方式,即便没有冲突,也会产生一个新的commmit id

相关文章
相关标签/搜索