4.1.4.rebase
Last updated
Was this helpful?
Last updated
Was this helpful?
由於branch與master分支的時間點不同, rebase是將branch的commit由舊的分支點移向新的分支點, 藉以讓master上上新的patch
與merge不同的是: merge是直接在master上直接加一個commit, 而rebase是在master上面加上新的commit
兩者的commit graph也不同
merge
rebase
1.git log
取得當前分支上的所有commit
2.git rebase -i HEAD~~
將最新的以及次新的commit合併
將第二行的pick改為squash
編輯新的commit message
3.git log
合併成功
可讀性佳: rebase的resulting history是線性的, 而且不會有divergent branches
導致錯誤
當branch上所依賴的部分在master上被刪除了, 但是由於在rebase時並不會顯示出來, 因此rebase的執行並不會被中斷而導致一連串錯誤的commit, 這時候必須再加上一個新的commit來補救
所以該如何避免在rebase時一連串錯誤的commit呢?
1.在rebase完後測試code以確認是否有bug
2.用Git merge取代之, 用一個commit處理所有的conflict, 可以history也可以描述何時合併, 合併時修改了哪些東西