Git 学习笔记_05(Git merge合併分支)

简介

我们在上一篇中提到,对于不同的开发者要对同一个专案进行开发时,可以使用git branch建立一个新的分支,这样可以在不影响其他分支的情况下,多人同时地对专案进行开发,而在不同分支上面进行开发后,最终还是需要将所有分支的开发内容合併到master当中,所以本篇记录了如何将多个分支合併。

合併分支 - fast forward

利用git merge可以将指定的分支合併起来。

Step 1 : 将HEAD移动到主要分支的commit上

利用git merge合併分支是将指定的分支合併到HEAD目前所在的位置上,所以我们为了将issue合併到master中,所以第一步我们需要将HEAD利用git checkout master移动到master的commit上。

http://img2.58codes.com/2024/20124767NFchFZfem2.png
http://img2.58codes.com/2024/201247678t2P9aeBvd.png

Step 2 : git merge 分支名称 -> 将指定的分支合併到目前HEAD所指向的位置

当在issue分支上进行开发完成并且确认没问题后,可以使用git merge issue将分支内容合併到master当中。
http://img2.58codes.com/2024/2012476727WGNdoBIm.png

可以在master里面的index.html中看到,属于issue分支里面的<h2>在issue分支中进行修改</h2>也出现在了master里的index.html中,代表着master与issue的专案内容合併了。
http://img2.58codes.com/2024/20124767AWhxKdS9KW.png
http://img2.58codes.com/2024/20124767cHbiNxh1Ug.png


合併分支 - 自动合併

随然上面有提到合併分支,但是有时候一个专案可能不只一个开发者,在你在分支上开发新功能的时候,可能有其他开发者已经更新了master上面的commit。

Step 1 : 新增一个issue分支并该改index.html内容以产生issue的commit节点

在issue的index.html中新增了<link rel="stylesheet" href="css/all.css">并且将它commit。
http://img2.58codes.com/2024/20124767P2K0lUEkm1.png
http://img2.58codes.com/2024/20124767BPQQmNmb5w.png
http://img2.58codes.com/2024/20124767qT36y8IN1Z.png

Step 2 : 回到master中也更改index.html并且commit产生新的节点

先在master的index.html中新增一行程式码<h1>Master</h1>,并将他commit产生一个新的节点。
http://img2.58codes.com/2024/20124767fnZckQHfp2.png
http://img2.58codes.com/2024/20124767qa3wMBG3MQ.png
http://img2.58codes.com/2024/20124767vM83plHmey.png

Step 3 : 将两个分支利用git merge合併

在将两个分支进行合併后,会产生一个文件,上面写着它已经将issue合併到master当中,如果没有问题的话就可以将此文件关闭。
http://img2.58codes.com/2024/201247677ejVmPqwTQ.png

关闭后会Git Bash上便会显示合併完成。
http://img2.58codes.com/2024/20124767PoWALPVbgu.png

在master的index.html中也会出现<link rel="stylesheet" href="css/all.css">
http://img2.58codes.com/2024/201247678Bq8huYJLI.png

而此时的branch会变成下图
http://img2.58codes.com/2024/20124767e4eeRWyoQc.png


合併分支 - 解决合併冲突

在进行档案合併的时候,若两个不同的分支对于同一个档案同一个部份进行更改,会发生merge冲突,因为git无法得知要保留哪一个分支的内容,所以必须手动选择需要保留的内容再手动merge。

修改issue中的index.html

再issue的index.html中新增一行程式<h1>issue</h1>
http://img2.58codes.com/2024/20124767AFw4DTioIA.png

修改master中的index.html

再master的index.html中,相同位置下新增<h1>Master</h1>
http://img2.58codes.com/2024/20124767XeH16GhiTZ.png

合併分支

http://img2.58codes.com/2024/20124767O5v1iwl3gR.png

当合併分支后会发现index.html中与先前不一样,这代表两个要合併的分支都更改到了同一个部分的资料而git并不知道哪一个要留下,所以需要手动删除其中一个或是两个都保留下来,下面选择将两行程式码都保留下来,
http://img2.58codes.com/2024/20124767DgwJC2UBB3.png

选择好要保留的程式码后再手动将新的index.html commit上去,这样就是手动的将两个分支合併起来
http://img2.58codes.com/2024/20124767xXBNHe1g4Y.png

再次回到issue的index.html发现依然保持着只有一行<h1>issue</h1>的状态,表示合併资料不会影响到issue分支
http://img2.58codes.com/2024/2012476708YZqfokIN.png

参考资料 :
掌握 Git 与 Github 程式时光机


关于作者: 网站小编

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

热门文章