git rebase是否会产生比git merge更多的冲突?

时间:2015-12-15 19:57:49

标签: git git-merge git-rebase

git rebase是否比git merge更容易发生冲突?我以前听说过它,并在this post

中引用
  

我在这里根据轶事进行推测,但我怀疑围绕反叛的普遍焦虑源于两个主要的地方:

     
      
  1. 由于git rebase的机制,合并冲突更频繁,似乎更难处理
  2.   

作者没有详细说明这种说法,但这不是我第一次听到它。

我已经听说并理解了这一点,因为rebase通过提交重放提交,你会多次遇到相同的冲突,但我从未遇到过这种情况。也许rerere行为现在默认为git rebase

我正在尝试在我的团队中提出rebase政策,但如果准确的话,我想解决这个问题。

老实说,我预计会有相同数量的冲突,因为两个分支的更改都会导致冲突,无论是否进行重组或合并。换句话说,冲突不是由最后的分支收敛引起的,而是由同一行的并行变化引起的

1 个答案:

答案 0 :(得分:9)

如果您有多个提交,那么您最终会遇到与rebase的更多冲突。这是因为当您进行rebase时,您必须为每次提交解决冲突。这意味着如果您尝试在主服务器之前重新提交5个提交的分支,并且在这5个提交中的第一个中引入了合并冲突,则您必须在以下每个提交中解决该冲突

重新定位通常应解决上述问题。另外值得一提的是,如果你想压缩到一个提交,那么有一个比rebase更简单的策略。

假设您要在master中合并5个提交,但它只能在一个提交中使用描述性消息轻松描述一个功能。

git fetch
git merge origin/master
git reset --soft origin/master
git commit

如果您只想要一次提交,这将更容易,并完成与rebasing相同的事情。