使用Git Rebase來合併分支

在使用git做版控的時候,團隊這邊用merge將多個分支合併到master,但事後再瀏覽版本線圖時,覺得整個線圖過於混亂,於是決定整個團隊改使用rebae來進行合併。

第一次聽到rebase這陌生的名稱,感到非常緊張,經mentor講解後做個筆記紀錄一下(我的mentor一直暗示我的部落格沒有新文章,小弟我只好趕快生一篇出來…)。

rebasing 是 merge branch 的第二種方法。rebasing 就是取出一連串的 commit,"複製"它們,然後把它們接在別的地方。

rebasing 的優點是可以建立更線性的 commit history。假如只允許使用 rebasing 的話,則我們的 repo 中的 commit log 或者是 commit history 會更加簡潔好看。

簡單來說:你想要別人樹枝的更新合併到你的樹枝裡,使用rebase的方式是把你的樹枝折斷,直接插在別人的樹枝上,你的樹枝下方就有別人的更新,在線圖上看就會像是同一條線。

以下例圖,如果你的bugFix分支需要master分支的最新功能
兩個分支

現在,我在bugFix分支,分別使用merge以及rebase把master合併到bugFix,各位可以看一下線圖呈現的差異

切換到bugFix分支後,用merge 指令把master合併進來

git merge master

使用merge把master合併到bugFix的線圖會是長這樣
使用merge來合併

如果使用rebase,一樣先切換到bugFix分之,在使用rebase指令把master合併到bugFix

git rebase master

輸入完則線圖會呈現圖片所述
使用rebase

在做rebase時,git實際動作是複製C2C3這兩個commit並把複製品接到master上面,然後標註C3'是bugFix分支

原本的C2C3現在不屬於任何的分支,所以被git隱藏起來。

以下是我的操作錄影

[Learn Git Branching]
[另一種合併方式(使用 rebase)-為你自己學 Git]

Facebook留言板