git rebase 和 git merge 一樣都是用於從一個分支獲取並且合併到當前分支,但是他們採取不同的工作方式
栗子場景:
你在一個feature分支進行新特性的開發,與此同時,master 分支的也有新的提交。
為了將master 上新的提交合併到你的feature分支上,你有兩種選擇:merging
orrebasing
merge
git checkout feature
git merge master
或者
git merge master feature
那麼此時在feature上git 自動會產生一個新的commit(merge commit)
marge 特點:自動建立一個新的commit
如果合併的時候遇到衝突,僅需要修改後重新commit
優點:記錄了真實的commit情況,包括每個分支的詳情
缺點:因為每次merge會自動產生一個merge commit,所以在使用一些git 的GUI tools,特別是commit比較頻繁時,看到分支很雜亂。
rebase
本質是變基 變基 變基
變基是什麼? 找公共祖先
git checkout feature
git rebase master
rebase操作不會生成新的節點,是將兩個分支融合成一個線性的操作。
rebase 特點:會合並之前的commit歷史
優點:得到更簡潔的專案歷史,去掉了merge commit
缺點:如果合併出現程式碼問題不容易定位,因為re-write了history