git merge和rebase的區別

2021-09-24 06:41:41 字數 884 閱讀 5271

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

栗子場景:

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

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

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命令,以及兩個命令的原理,詳細解釋參考這裡。下面的...