您好,登錄后才能下訂單哦!
這篇文章主要講解了“git如何合并分支代碼”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“git如何合并分支代碼”吧!
git合并分支代碼的方法:1、使用“git merge”命令,該命令用來做分支合并,可以將其他分支中的內(nèi)容合并到當(dāng)前分支中。2、使用“git rebase”命令,該命令用于改變當(dāng)前的分支的基點(diǎn),進(jìn)而實(shí)現(xiàn)分支合并。
// 初始化倉庫
git init
// 創(chuàng)建a.txt
touch a.txt
// 創(chuàng)建b.txt
touch b.txt
// 加入暫存區(qū)
git add .
// 提交
git commit -m 'initial'
git checkout -b feature
feature 分支開發(fā)下一版本新功能,提交了兩次,分別修改 a.txt 文件和 b.txt 文件。
master 分支開發(fā)本次版本功能,同樣提交了兩次,且修改了 a.txt 文件和 b.txt 文件。
當(dāng)前分支情況如下圖,各節(jié)點(diǎn)上面的字符是每次 commit 的散列值,當(dāng)前 master 分支的 header 在 c5 節(jié)點(diǎn)上,feature 分支的 header 在 c3 節(jié)點(diǎn)上。
這個(gè)時(shí)候需要將 feature 分支合并回 master 分支,有兩種方案:
在 master 分支上直接 merge feature 分支;
是先在 feature 分支上 rebase(變基),然后在 master 分支上 merge feature 分支。
下面分別說明一下這兩種方案:
git merge 用來做分支合并,將其他分支中的內(nèi)容合并到當(dāng)前分支中。
git merge 操作比較暴力,也是用的比較多的方式,下面演示的是 feature 分支合并至 master 分支,具體過程如下:
找到 feature 分支和 master 分支的最近共同祖先 commit 節(jié)點(diǎn) c1;
把 feature 分支的最新一次 commit 節(jié)點(diǎn) c3 和 master 分支上的最新一次 commit 節(jié)點(diǎn) c5 合并,此時(shí)若有沖突,則一次性解決所有沖突,然后生成一個(gè)新的 commit 節(jié)點(diǎn) c6;
同時(shí)根據(jù)兩個(gè)分支上的 commit 時(shí)間的先后順序,依次放到 master 分支上,使用git log可以看到時(shí)間順序。
上面流程的結(jié)果示意圖如下所示:
在項(xiàng)目中的操作命令如下。可以看到執(zhí)行 git merge feature
命令后,存在沖突,進(jìn)入 merging 工作區(qū),然后一次性解決所有沖突后,提交一個(gè)新的 commit。
執(zhí)行 gitk 命令行,可以在界面上看到當(dāng)前分支如下圖所示。有一個(gè)新的 commit。
這個(gè)命令從名字上就可以直觀看出它的功能:改變當(dāng)前的分支的基點(diǎn)
。對于 feature 分支,它是從 master 分支的 c1 節(jié)點(diǎn)創(chuàng)建的分支,所以它的基點(diǎn)
就是 c1。如果在 feature 分支上執(zhí)行 git rebase master ,其過程大致如下:
找到當(dāng)前 master 分支最新的 commit 節(jié)點(diǎn) c5,將 feature 分支的基點(diǎn)變成 c5 節(jié)點(diǎn)。;
若 feature 分支與 master 分支存在沖突,那么將根據(jù) feature 分支的提交時(shí)間,依次解決沖突,并修改 feature 分支此次 commit 的散列值。
最終在分支上看,呈現(xiàn)一條直線,但是存在歷史commit覆寫的問題。
上面過程的結(jié)果示意圖如下所示,其中 c2’和 c3’表示散列值改變了。
值得注意的是:
執(zhí)行 rebase 操作的時(shí)候,需要保證 master 分支處于最新狀態(tài),否則在 merege 合并的時(shí)候也可能存在沖突,就失去使用 rebase 的意義。
千萬不要對已經(jīng)推到遠(yuǎn)程的內(nèi)容進(jìn)行rebase,如果有人拉取遠(yuǎn)程代碼后修改并提交,分支會變得極其麻煩。
了解其基本過程后,我們就可以是用 rebase 命令開始進(jìn)行合并分支的操作:
在項(xiàng)目中執(zhí)行 git rebase master,如下所示。因?yàn)閮纱翁峤欢即嬖跊_突,故在 rebase 工作區(qū)中需要依次解決這些沖突。
在 feature 分支上執(zhí)行 gitk 命令,可以在界面中看到:
feature 分支完成變基之后,切換回 master 分支執(zhí)行 git merge feature,就可以完成合并操作。
在 master 分支上執(zhí)行 gitk,其分支結(jié)構(gòu)如下??梢钥吹椒种С尸F(xiàn)一條線,看上去非常清爽。
有時(shí)候分支上的代碼還沒開發(fā)完成,需要合并分支,此時(shí)只需要:
1、執(zhí)行 git stash 將工作區(qū)內(nèi)容存儲起來,然后選擇上述兩種合并分支的方式進(jìn)行分支合并。
2、完成分支合并后,切回開發(fā)的分支,執(zhí)行 git stash pop 將工作區(qū)內(nèi)容彈出就可以繼續(xù)愉快的寫代碼了。
感謝各位的閱讀,以上就是“git如何合并分支代碼”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對git如何合并分支代碼這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。