git學習之git rebase

牛肉燒酒發表於2019-04-07
git rebase objectBranch    
​	更換合併分支的'建立此分支時的基礎節點'指向將要被合併的分支的最後一個節點
git checkout -b newBranch       
​	在新分支建立的同時切換branch指向新的分支
git merge objectBranch     
​	將當前分支與目標分支合併
複製程式碼

​ 網上的翻譯有很多,上面是自己的一些理解。

首先,建立下面的分支樹:

git學習之git rebase

​ 依次建立並新增到庫1.txt和2.txt,形成兩條記錄;使用git checkout -b "branch1"建立新的分支節點,此時,HEAD同時指向master和branch1,主分支和分支1有一個共同的基點:

git學習之git rebase

​ 然後,使用git checkout "master",讓HEAD指向主分支樹,我們先建立主分支上的記錄一二三四,一番提交後:

git學習之git rebase

​ 調整HEAD指標,接下來建立分支一上的記錄:

git學習之git rebase

​ 一般到了這裡,我們會選擇調整HEAD指向master主分支,再git merge branch1,來將分支一合併到主分支上:

git學習之git rebase
git學習之git rebase

此時的HEAD指向主分支和分支一的下一個節點(都是節點七),到這裡我們就實現了開頭提到的效果,但是這樣會讓我們的提交記錄混亂(也有說法這樣會保證提交記錄的真實性):

git學習之git rebase

​ 為了讓節點樹更加美觀,我們可使用git rabase來變基,讓分支一上的基礎節點認同主分支上的最後一個節點(使用之前先回退之前的操作)。

git學習之git rebase

git學習之git rebase

​ 此時的節點樹狀態:

git學習之git rebase

​ 最後,我們切換到主分支上並將分支一合併,我們的提交記錄就變得更加清晰了。

git學習之git rebase

git學習之git rebase

相關文章