我從用git就一直用rebase,但是新的公司需要用merge命令,我不是很明白,所以查了一些資料,總結了下面的內容,如果有什麼不妥的地方,還望指正,我一定虛心學習。
標題上的兩個命令:merge和rebase都是用來合併分支的。
這裡不解釋rebase命令,以及兩個命令的原理,詳細解釋參考這裡。
下面的內容主要說的是兩者在實際操作中的區別。
分支就是便於多人在同一專案中的協作開發。比方說:每個人開發不同的功能,在各自的分支開發過程中互不影響,完成後都提交到develop分支。極大的提高了開發的效率。
每個人建立乙個分支進行開發,當開發完成,需要合併到develop分支的時候,就需要用到合併的命令。
合併的時候,有可能會產生衝突。
衝突的產生是因為在合併的時候,不同分支修改了相同的位置。所以在合併的時候git不知道那個到底是你想保留的,所以就提出疑問(衝突提醒)讓你自己手動選擇想要保留的內容,從而解決衝突。
採用merge和rebase後,git log的區別,merge命令不會保留merge的分支的commit:
處理衝突的方式:
git pull
和git pull --rebase
區別:git pull
做了兩個操作分別是『獲取』和合併。所以加了rebase就是以rebase的方式進行合併分支,預設為merge。
1、我自己嘗試merge
命令後,發現:merge時並沒有產生乙個commit。不是說merge時會產生乙個merge commit嗎?
注意:只有在衝突的時候,解決完衝突才會自動產生乙個commit。
如果想在沒有衝突的情況下也自動生成乙個commit,記錄此次合併就可以用:git merge --no-ff
命令,下面用一張圖來表示兩者的區別:
2、如果不加 --no-ff 則被合併的分支之前的commit都會被抹去,只會保留乙個解決衝突後的 merge commit。
我的理解:主要是看那個命令用的熟練,能夠有效的管理自己的**;還有就是團隊用的是那種方式。
我對於rebase比較熟悉,所以我一般都用rebase
,但是現在的公司用的是merge --no-ff
命令合併分支。所以,我在工作上就用merge,個人專案就用rebase。
也可以兩者結合:
看懂上面的兩幅圖就行了。
commit log的區別
處理衝突的方式
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 和 git merge 一樣都是用於從乙個分支獲取並且合併到當前分支,但是他們採取不同的工作方式 栗子場景 你在乙個feature分支進行新特性的開發,與此同時,master 分支的也有新的提交。為了將master 上新的提交合併到你的feature分支上,你有兩種選擇 mer...