Git-合併分支

準备工作

强烈建议使用Git GUI工具来观察分支,有助于釐清目前专案的版控情况。

下载TortoiseGit,安装很简单,就不多说明了。

安装完毕,打开软体,在左下角勾选All Branches,才能显示所有分支的情况。
http://img2.58codes.com/2024/201125730OuUN27R1X.png

观察分支

延续Git-了解分支&分支(建立、切换、删除、回复)。
显示master与feature分支。
initial commit是所有分支的共同commit,再以此分出去。

master分支
http://img2.58codes.com/2024/20112573GAChMYB7ch.png

feature分支
http://img2.58codes.com/2024/20112573yVUr9Taotd.png

合併前注意

合併分支之前,有两点要先考量:

先确定主要分支,再合併其他分支。合併之后,可能发生的冲突。

假设我们以master为主要分支,去合併feature分支。
重点注意,合併之后,会修改master分支的commit,而feature分支不受影响。
换句话说,master分支会套用feature分支所有的更新。

补充说明
master分支与feature分支,在git中都只是分支,没有谁是主要分支的问题。
这只是一般开发习惯,会将master视为主要分支。
所以,我们也可以反过来,将master併入feature之中。
只是很少这样做。

开始合併

设定master为主要分支,合併feature分支。重点注意,必须要在master分支执行。合併指令 git merge [分支名称]执行后,会跳出Vim文字编辑器,只要输入:q按下ENTER,就可以储存讯息离开。
http://img2.58codes.com/2024/20112573mxKtWLHxoo.png
关于Vim的操作,请自行Google。

显示log小技巧
可以输入 git log --oneline
表示只要简短的commit历程,画面会清爽许多。
http://img2.58codes.com/2024/20112573FXM5YvHl7k.png
成功合併后,master分支会多一个合併的commit,讯息显示 Merge branch 'feature'
同时也看到一个来自feature的commit,Id等同于feature的commit。

合併后的线图。
http://img2.58codes.com/2024/20112573qUPpOerrcG.png
feature分支被併入master分支,并且产生一个合併的commit(Merge branch 'feature')。

目前位于master分支,查看工作资料夹,src资料夹消失了。
http://img2.58codes.com/2024/20112573DJSqco4JVl.png
所以master分支确实有套用feature分支的commit状态。

切换到feature分支,它的commit历程不受影响。
http://img2.58codes.com/2024/20112573KrfDJ2cm0b.png

feature分支线图,完全对应Git Bash的commit历程。
http://img2.58codes.com/2024/20112573xW8FQA14BM.png

tslint.json又出现了,因为feature分支并没有删除tslint.json。
http://img2.58codes.com/2024/20112573fPs8CZduRK.png
这次的合併,feature确实没有受到影响。

将feature合併到master之后,我们还是可以在feature分支继续开发,不会影响master。

在feature新增档案,写入内容。
http://img2.58codes.com/2024/20112573ZdtCn5hjy1.png
commit
http://img2.58codes.com/2024/20112573Sz5k42iEtH.png

线图显示,feature分支的版本领先master分支。
http://img2.58codes.com/2024/20112573OUIlAS22uR.png

新手容易犯的错

有的新手看到feature分支有新版本,便会把master分支给合併到feature分支。
结果线图变这样。
http://img2.58codes.com/2024/201125733xyzsZVnfe.png
是不是觉得线图有点乱了?

这边犯的错就是,一开始是master分支合併feature分支,
接下来,feature分支又合併master分支,
这样互相合併的结果,导致线图的混乱。

正确合併的观念

先确定主要分支,之后其他分支有任何变更,一律由主要分支去合併。
从头到尾都是单方向进行,由主要分支去合併,而不是反过来合併主要分支。

回复到合併前的状态

指令 git reset --hard ORIG_HEAD
http://img2.58codes.com/2024/20112573Dj5AcKuY6r.png

回复线图。
http://img2.58codes.com/2024/20112573OUIlAS22uR.png

执行正确合併

切换到master,再合併feature。
http://img2.58codes.com/2024/20112573nTWjiTwCE7.png

线图变得明了许多。
http://img2.58codes.com/2024/201125732eRz49bFc3.png

删除分支,继续开发

此时master分支已经是最新版本了,feature分支可以选择删除,再从master分支另开分支继续开发。
http://img2.58codes.com/2024/20112573enYWyq9BqI.png
由于feature分支已经commit了,所以-d可以顺利删除。

目前只剩master分支。
http://img2.58codes.com/2024/20112573r4j3T7QWv2.png

以上就是分支合併必须注意的事项。

本文为观看网路教学的学习笔记。


关于作者: 网站小编

码农网专注IT技术教程资源分享平台,学习资源下载网站,58码农网包含计算机技术、网站程序源码下载、编程技术论坛、互联网资源下载等产品服务,提供原创、优质、完整内容的专业码农交流分享平台。

热门文章