git merge和rebase的區別

sdbxpjzq發表於2018-03-25

git rebase 和 git merge 一樣都是用於從一個分支獲取並且合併到當前分支,但是他們採取不同的工作方式

栗子場景:

你在一個feature分支進行新特性的開發,與此同時,master 分支的也有新的提交。

git merge和rebase的區別

為了將master 上新的提交合併到你的feature分支上,你有兩種選擇:merging orrebasing

merge

git checkout feature
git merge master
複製程式碼

或者

git merge master feature
複製程式碼

那麼此時在feature上git 自動會產生一個新的commit(merge commit)

git merge和rebase的區別

marge 特點:自動建立一個新的commit

如果合併的時候遇到衝突,僅需要修改後重新commit

優點:記錄了真實的commit情況,包括每個分支的詳情

缺點:因為每次merge會自動產生一個merge commit,所以在使用一些git 的GUI tools,特別是commit比較頻繁時,看到分支很雜亂。

rebase

本質是變基 變基 變基 變基是什麼? 找公共祖先

git checkout feature
git rebase master
複製程式碼

git merge和rebase的區別

rebase操作不會生成新的節點,是將兩個分支融合成一個線性的操作。

rebase 特點:會合並之前的commit歷史 優點:得到更簡潔的專案歷史,去掉了merge commit 缺點:如果合併出現程式碼問題不容易定位,因為re-write了history

相關文章