git rebase 和 git merge 一樣都是用於從乙個分支獲取並且合併到當前分支,但是他們採取不同的工作方式
栗子場景:
你在乙個feature分支進行新特性的開發,與此同時,master 分支的也有新的提交。
為了將master 上新的提交合併到你的feature分支上,你有兩種選擇:merging
orrebasing
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比較頻繁時,看到分支很雜亂。
本質是變基 變基 變基 變基是什麼?找公共祖先
git checkout feature
git rebase master
複製**
rebase操作不會生成新的節點,是將兩個分支融合成乙個線性的操作。
rebase 特點:會合併之前的commit歷史 優點:得到更簡潔的專案歷史,去掉了merge commit 缺點:如果合併出現**問題不容易定位,因為re-write了history
git merge和rebase的區別
git merge 會生成乙個新得合併節點,而rebase不會 比如 d e test a b c f master 使用merge合併 d e a b c f g test,master 而使用rebase則 a b d e c f test,master 使用git pull時預設是merge,...
git merge和rebase的區別
一直以來都以為rebase是合併衝突的一種手段,和merge一樣的,有哪個都行。今天才決定把他們搞懂了。我是有多麼的懶。git merge 會生成乙個新得合併節點,而rebase不會 d e test a b c f master 使用merge合併後 d e a b c f g test,mast...
git merge和rebase的區別
我從用git就一直用rebase,但是新的公司需要用merge命令,我不是很明白,所以查了一些資料,總結了下面的內容,如果有什麼不妥的地方,還望指正,我一定虛心學習。標題上的兩個命令 merge和rebase都是用來合併分支的。這裡不解釋rebase命令,以及兩個命令的原理,詳細解釋參考這裡。下面的...