Git 合并两个具有不同历史记录的不同存储库

Git 合并两个具有不同历史记录的不同存储库,git,github,version-control,merge,embedded-linux,Git,Github,Version Control,Merge,Embedded Linux,我们最终得到了两种不同历史的回购,因为两个人开始了他们自己的回购,现在是时候合并了 开始代码是相同的,只是两个不同的gitinit和remote 因此,条件是开发商D1已启动,其回购协议为: 开始->A->B->C-> 开发商D2已启动,其回购协议为: 开始->Z->Y->X-> 现在,我们希望两个回购协议都有一个共同的分支,以便它们可以合并自己的分支进行新的工作 他们的工作大多是独立的,有一些小冲突可以手动解决 什么命令或过程应该是最好的?我的建议是让其中一个回购协议作为主体(我们说第一个回购

我们最终得到了两种不同历史的回购,因为两个人开始了他们自己的回购,现在是时候合并了

开始代码是相同的,只是两个不同的gitinit和remote

因此,条件是开发商D1已启动,其回购协议为:

开始->A->B->C->

开发商D2已启动,其回购协议为:

开始->Z->Y->X->

现在,我们希望两个回购协议都有一个共同的分支,以便它们可以合并自己的分支进行新的工作

他们的工作大多是独立的,有一些小冲突可以手动解决


什么命令或过程应该是最好的?

我的建议是让其中一个回购协议作为主体(我们说第一个回购协议),在那里创建一个分支(我们说另一个回购协议),然后转储/复制(没有git命令,只是一个普通副本)第一个回购协议的工作目录中的另一个回购协议的提示作为头,提交更改,并将另一个回购分支合并到第一个回购的“主”分支的头部

如果您想保留提交历史记录,您可以重新设置基础。

我的建议:
可在首被告回购或次被告回购中进行:

D2方面

git remote add [name-for-D1-repo] [D1-repo-url]
git fetch --all
git merge [name-for-D1-repo]/[D1-working-branch] --allow-unrelated-histories

是的,这使它起作用,但这里的要点是,双方都希望有历史,如果可能的话,也不希望获得新的回购协议。如果可能的话,他们只想继续使用自己的git。实际上,您可以合并两个提交,而无需使用公共基。Git曾经在没有警告的情况下这样做;现在您需要
——允许不相关的历史记录
(请参阅)。在这两种情况下,Git用作“公共基”的实际上是空树,因此两个分支提示(与此合成合并基相比)完全由“添加所有文件”组成。这有时是你想要的,有时不是。你是对的,我编辑了我的答案,删除了那句话;)谢谢。可能重复的没有它的不同的问题。初始SDK在这里是相同的。两者都希望有一个公共的分支,它们可以在本地合并,然后推到公共分支。可能的重复您得到了帮助您解决问题的答案吗?大多数是简单的输入错误:这是
git fetch--all
——允许不相关的历史记录
标志是新的;如果
gitmerge
拒绝它,您只需拥有一个始终使用该标志的旧git。