多分支rebase
多分支的情況下,我們往往希望得到有序的提交歷史,看下面的例子:
執行如下步驟進行多分支rebase:
git rebase master bugFix
git rebase bugFix side
git rebase side another
git rebase another master
複製程式碼
兩個父節點
操作符^
與~
符一樣,後面也可以跟一個數字。
但是該操作符後面的數字與~後面的不同,並不是用來指定向上返回幾代,而是指定合併提交記錄的某個父提交。還記得前面提到過的一個合併提交有兩個父提交吧,所以遇到這樣的節點時該選擇哪條路徑就不是很清晰了。
Git預設選擇合併提交的“第一個”父提交,在操作符^後跟一個數字可以改變這一預設行為。
廢話不多說,舉個例子:
//鏈式操作
git branch bugWork master~^2~
複製程式碼
糾纏不清的分支
如上圖,現在我們的master分支是比one、two和three要多幾個提交。出於某種原因,我們需要把master分支上最近的幾次提交做不同的調整後,分別新增到各個的分支上。
one需要重新排序並刪除C5,two僅需要重排排序,而three只需要提交一次。
執行如下命令:
git checkout one
git cherry-pick C4 C3 C2
git checkout two
git cherry-pick C5 C4 C3 C2
git branch -f three C2
複製程式碼
相信大家對Git高階話題已經基本掌握,不妨在自己的git環境中動手試一試吧~