假设我分叉某人的git仓库,并使委托A,b,c和D。从那时,我从那时就撒了樱桃a和c的镜子,从而成为'和c'。他还自己制作了自己的X,Y和Z。因此,毕竟,我的分支机构拥有ABCD,他的分支机构具有“ C” XYZ。假设两个分支都出版了,因此rebase并不是一个有吸引力的选择。还假设XYZ不与ABC D的任何D。我如何以有用的方式合并这两个分支?我应该简单地合并然后手动解决一切吗?关于在合并的头的日志中,我可以做些什么?这两个分支是否注定要仅通过从现在开始挑选彼此的提议来同步?

有帮助吗?

解决方案

直接合并应该起作用。 git应该注意相同的变更集,并且不会尝试合并a/a'或c/c'。如果X,Y或Z触摸了与A'/c'更改相同的代码,则可能必须解决此处的冲突,尤其是如果B或D触摸相同的代码。

你可以永远 git merge --no-commit 并检查结果以查看您是否期望。

其他提示

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

您可以首先合并他的c',如果这些冲突是不平凡的,或者因为它们被应用了一些秩序,那么在此阶段的任何冲突都来自重新应用自己的更改。如果您的C在B上堆积并且他的C'不是干净的副本,或者BCD在如此重新启用他的A上堆积的A'不再是显而易见的No-Op,等等。

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

git merge --strategy=ours C'

然后合并其余的,更多地关注那里的冲突。如果他的XYZ确实没有触及ABCD的东西,那么这应该没有冲突。如果他在将C合并为c'时做出了怪异或错的东西,并且在合并C'时将其丢弃,那么它可能会回来并在这里或将来的任何时间咬住您。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top