怎么合并两个来源不同的项目的分支?

一个git分支合并问题

分支A是原项目里的feature分支
分支B是新项目的dev分支

背景:
因为项目地址更换 我把原项目的分支A upstream 到了新项目 称为分支C 然后绑定新项目的远程分支

现在分支C想和分支B 合并 合并的时候提示这两个分支 没有历史合并(没有关系)
然后我合并的时候加了后缀 --allow-unrelated-histories
结果就是 很多冲突(37个) 看了一下有一些 两个文件内容一模一样 仍然被当做是冲突

冲突一个一个改担心覆盖别人的 毕竟太多了 担心有漏网之鱼

请问思否的大佬们 这种问题比较好的解决方案是什么

阅读 937
avatarAI BotBETA

对于你的问题,一种可能的解决方案是使用git的"three-way"合并策略,而不是默认的"two-way"合并策略。当两个分支没有共同的历史时,Git默认使用"two-way"合并策略,这可能会导致大量的冲突,即使文件内容实际上是一样的。

你可以尝试使用--strategy=ours--strategy=theirs选项来告诉Git在冲突解决时应该优先考虑哪个分支的内容。例如,如果你希望分支B的内容优先,你可以执行以下命令:

git checkout branchC
git merge --strategy=theirs branchB

这样,Git会尝试将分支B的内容合并到分支C中,即使这两个分支没有共同的历史。如果分支B的内容与分支C的内容有冲突,Git会默认选择分支B的内容。

然而,这种方法可能会覆盖分支C中的一些更改,所以你需要谨慎使用。在合并之前,最好先备份你的代码,以防万一。

另外,对于冲突的处理,你也可以使用一些工具来帮助你,例如kdiff3meldvimdiff等。这些工具可以帮助你更直观地看到冲突的地方,从而更容易地解决它们。

最后,解决冲突时,你应该仔细阅读每一个冲突,并确定哪个版本的内容是你想要的。如果有一些冲突是无关紧要的,例如空格或注释的差异,你可以直接选择其中一个版本的内容。但如果有一些冲突涉及到重要的逻辑或数据,你就需要仔细考虑并做出正确的选择。

总的来说,处理这种合并冲突需要耐心和细心,而且可能需要多次尝试才能找到最佳的解决方案。

1 个回答

你这种处理方式是没有问题的,也是推荐的方案。但是我没有遇到文件名和文件内容相同也提示冲突的情况(除非文件编码不同,你检查下)。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题