2012-11-01 55 views
5

我經常聽說它說使用git rebase減少了合併衝突的次數而不是git merge,但我從來沒有找到解釋爲什麼會這樣的情況。爲什麼git rebase通常比合並更少的合併衝突?

只要在另一組更改上重播一組更改,不會奇蹟般地消除當兩個人都修改相同的代碼行時固有的衝突,那麼是什麼讓rebase更好?

任何人都可以提供一個簡單的例子,其中一個合併會有衝突,但一個rebase不?

更新:經過3年多的git經驗後,我開始相信我最初的前提是錯誤的:在重組vs合併中衝突同樣可能發生。然而,Rebase確實可以讓歷史更容易理解,並在需要時進行挑選或倒帶。

+0

實際上,rebase可以給你比合並更多的衝突:考慮兩個提交,一個引入了一些衝突的變化,另一個提交它。重新綁定期間,您必須解決一個甚至兩個衝突,而合併將完全跳過該更改+恢復對。 – Roman

回答

0

您可以解決導入中的衝突,因此實際上您沒有任何衝突。

如果我在我的特徵分支中編輯了一條線,它已經在主分支中進行了更改,並且進行了直接的合併,它將發生衝突。

如果我重新綁定,它會停止在我作出此更改的提交,並在那一點處理衝突。

+0

聽起來像你仍然在解決衝突,然後在不同的時間?我的理解是,它實際上比這更好,而且如果你改變而不是合併,甚至不會發生一些衝突。希望看到,但肯定。 – Magnus