3

假设我 fork 某人的 git repo 并提交 A、B、C 和 D。我从那时分叉的 persom 选择了 A 和 C,因此成为 A' 和 C'。他还自己提交 X、Y 和 Z。所以在这一切之后,我的分支有 ABCD,他的有 A' C' XY Z。假设两个分支都已发布,所以 rebase 不是一个有吸引力的选择。还假设 XYZ 不与任何 ABC D 冲突。如何以有用的方式合并这两个分支?我应该简单地合并然后手动解决所有问题吗?对于合并头的日志中的重复提交消息,我能做些什么吗?从现在开始,这两个分支是否注定只能通过挑选彼此的提交来同步?

4

2 回答 2

3

直接合并应该有效。Git 应该注意到相同的更改集,并且不会尝试合并 A/A' 或 C/C'。如果 X、Y 或 Z 触及 A'/C' 更改的相同代码,您可能必须解决那里的冲突,特别是如果 B 或 D 触及相同的代码。

您可以随时git merge --no-commit检查结果,看看是否符合您的预期。

于 2010-12-16T21:55:01.887 回答
1

如果没有冲突,直接合并是显而易见的。如果有冲突,虽然...

您可以先合并他的 C',此阶段的任何冲突都来自重新应用您自己的更改,如果它们不是微不足道的,或者因为它们的应用有点乱。如果您的 C 建立在 B 上并且他的 C' 不是一个干净的副本,或者如果任何 BCD 建立在 A 上,因此重新应用他的 A' 不再是明显的无操作等,就会发生这种情况。

您可以跳过详细的冲突调查并手动接受您的版本,或者:

git merge --strategy=ours C'

然后合并其余的,更加注意那里的冲突。如果他的 XYZ 确实不接触 ABCD 的东西,这应该没有冲突。如果他在将 C 合并为 C' 时做了一些奇怪或错误的事情,而你在合并 C' 时丢弃了它,它可能会在这里或将来的任何时间回来咬你。

于 2014-12-30T14:25:00.240 回答