【问题标题】:Why does git rebase often have fewer merge conflicts than a merge?为什么 git rebase 的合并冲突通常比合并少?
【发布时间】:2012-10-22 06:49:49
【问题描述】:

我经常听到有人说,与 git merge 相比,使用 git rebase 可以减少合并冲突的数量,但我从来没有找到解释为什么会这样。

当两个人都修改同一行代码时,简单地在另一组更改之上重放一组更改并不能神奇地消除内在冲突,那么是什么让 rebase 更好?

谁能提供一个简单的例子,合并会产生冲突,而变基不会?

更新:经过 3 年的 git 经验,我开始相信我原来的前提是错误的:在 rebase 和 merge 中冲突的可能性相同。然而,rebase 确实使历史更容易理解,并在需要时选择或倒带。

【问题讨论】:

  • 实际上,rebase 可以给你带来比合并更多的冲突:考虑两个提交,一个引入一些冲突的更改,另一个还原它。在变基期间,您必须解决一个甚至两个冲突,而合并将完全跳过该更改+还原对。

标签: git merge rebase git-rebase


【解决方案1】:

您在提交中解决了本应引入它们的冲突,因此实际上,您没有任何冲突。

如果我在我的特性分支中编辑了一个在主分支中发生变化的行,并进行直接合并,它将发生冲突。

如果我变基,它将在我进行此更改的提交处停止,然后我处理冲突。

【讨论】:

  • 听起来你还在解决冲突,只是在不同的时间?我的理解是它实际上比这更好,并且如果你重新设置而不是合并,甚至不会发生一些冲突。不过希望看到对此的肯定。
猜你喜欢
  • 2011-12-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-25
  • 2021-11-09
  • 2019-07-16
  • 2022-12-18
相关资源
最近更新 更多