如何在不丢失两个存储库的历史记录的情况下合并两个git存储库

时间:2019-05-09 02:55:13

标签: git github git-repo

我需要合并两个存储库,而又不丢失两个存储库的历史。我搜索了几个论坛,但没有一个可以提供完整的解决方案。在执行了来自各种来源的几个步骤之后,我可以设法将缺失的点连接起来,并将两个单独的存储库合并到一个完整的历史记录中。

还有其他一些关于合并分支的答案,或者只是没有完整的说明/步骤。

2 个答案:

答案 0 :(得分:0)

如果两个存储库都在您的计算机上,例如您有文件夹

A/.git
A/client-src

B/.git
B/server-src

只需转到其中之一:

cd A

然后输入:

git remote add repo-b ../B

这将创建从repo-a到repo-b的符号链接(“ repo-b”只是一个符号名称,您可以选择任何想要的名称) 然后

git fetch repo-b

将合并两个存储库。此时,您将在一个存储库中同时拥有这两个历史记录,但仍位于不同的分支中。分支“ master”(您所在文件夹的master)将包含客户端代码。分支“ repo-b / master”将包含服务器代码。

然后您只需要合并两者:

git merge repo-b/master --allow-unrelated

此后,您将在回购A中拥有一个组合的主分支。如果您确定存储库B中没有其他有意义的信息(标签,其他分支),则可以将其丢弃并继续使用存储库A。这两个历史记录都将保持不变。

为完整起见,您最终应该删除现在从Repo-A到Repo-B的无用链接:

git remote remove repo-b

答案 1 :(得分:-1)

以下是步骤

git clone <NEW REPO>
cd <NEW REPO FOLDER>
dir > README.MD --> this step is just to initiate the new repository.
git commit -m "initiate the new repository"
git remote add -f <RANDOM NAME A> <OLD BRANCH A>
git remote add -f <RANDOM NAME B> <OLD BRANCH B>
git pull origin master --allow-unrelated-histories
git push -u origin master
git merge --allow-unrelated <RANDOM NAME A>/master
git merge --allow-unrelated <RANDOM NAME B>/master
git push origin master

我相信这篇文章应该对其他人有帮助。