关于Git:如何合并存储库副本

How to merge a repository copy

在项目开始时,我们启动了回购协议A。回购协议持续了几个月,直到其中一位工程师决定资助该项目。现在,他只需复制目录并开始一个新的回购。回购B。现在B没有A的历史,A也没有任何进一步的发展。现在我们想回到A,把B的所有东西都合并到A中,在B是一个独立的回购时保留B的所有历史。唯一的宽限是,既然B是A的复制品,我就可以把B的历史嫁接到A的末尾,一切都会好起来的。

不幸的是,我花了很长时间试图做到这一点。

我试过(repo-a):

1
2
3
git add remote new REPO-B
git checkout -b mergeAttempt
git merge -X theirs --allow-unrelated-histories new/master

现在,这似乎稍微起作用了,现在只有repo-b的历史覆盖了repo-a中对修改过的文件存在的任何历史,所以没有真正的历史。所以我尝试:

1
git cherry-pick -X theirs <REPO-B first commit>..<REPO-B last commit>

这也失败了,因为repo-b在它和master中创建的分支之间进行了多次合并。我还尝试在repo-b中创建一个分支,它将repo-a的根重新平衡到最后一次repo-a中的承诺,并产生可笑的结果。

所以我不知道从这里到哪里去。


将回购A合并为回购B的步骤:

1
2
3
4
5
6
7
8
9
cd path/to/REPO-B

git remote add REPO-A path/to/REPO-A

get fetch REPO-A

git merge --allow-unrelated-histories REPO-A/master

git remote remove REPO-A

来源:Git合并不同的存储库?