git merge和rebase的區別

sdbxpjzq發表於2018-03-25

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

相關文章