commit b2e01e2 添加了一个新文件,当将其合并到位于4dee649的主分支中时,它可以正常工作,并添加了新文件。
将 b2e01e2 重新设置到主分支时,将导致另一个文件发生冲突。
先前将提交 84b064f 合并到提交 7f5db59 的主分支中的确在该文件上引起了冲突,并在 7f5db59 下解决了该问题强>。
我在Is merge without conflicts equivalent to rebase without conflicts?查看了讨论内容。但是问题在于,基于rebased的分支的文件与主分支中的另一个文件冲突,这不是我的情况。
此讨论Git: Why does rebase result in conflicts while merge does not?说:“这些提交之一可能有一个您在后续提交中解决的冲突。”似乎是我的情况。但是我仍然不清楚为什么将新添加的文件重新设置基址会导致另一个文件发生冲突。
我的第二个问题是,何时最好使用合并而不是重新设置基准?在我的情况下,如果由于通用基础(在我的情况下为aee4164)以来分支中存在冲突,则最好使用merge而不是rebase。但是是这种情况吗?
答案 0 :(得分:2)
因为合并时,您不不要考虑分支中间的变更集,因为它们是分开的。 Git基本上考虑了您要合并的两个分支的尖端与它们分开的点之间的差异。如果您在另一个分支上有一个修订版本,可能会引起冲突,但是有一个更高版本的修订版本会处理代码的冲突源部分,从而不再产生冲突(例如,还原会造成冲突。...不是唯一的方法,而是肯定会解决冲突的方法),合并不会看到冲突弹出,而在重新定基时会发生冲突。