如何将来自两个不同存储库的两个分支合并到一个存储库中?

我的Git仓库的结构如下所示:

ABCDEF # master branch in separate repo1 ABCDEGH # master branch in separate repo2 

AH是简单的提交。 正如你所看到的仓库是相关的(repo2是repo1的一个分支)。 我试图将这两个存储库合并为一个。

之后,单个存储库应该具有以下结构:

 ABCDEF # master branch of previous repo1 \ \ GH # master branch of previous repo2 

我已经花了很多时间阅读Git用户指南等等。 但是,这个(特殊的)使用情况似乎没有logging在任何地方。

你可以把同一个文件系统上的另一个git仓库作为远程仓库。

首先,做下面的事情:

 git remote add <name> /path/to/other/repo/.git git fetch <name> git branch <name> <name>/master #optional 

现在他们都在一个单一的仓库中。 你可以使用git checkout在它们之间切换,使用git merge等进行合并。

你的图片表明,你并不是真的想“合并这两个仓库”,而是把提交G和H合并到repo1中。 你应该可以做一些简单的事情,把repo2作为repo1的远程服务器,并获取/提取更改。

我认为吉姆是对的。 另外请记住,如果两个提交对代码执行完全相同的补丁/差异,它们将具有完全相同的SHA1哈希值。 所以A到E在回购中应该有相同的SHA1,所以从一个到另一个合并不应该是一个问题,并且把合并的回购作为唯一的回购来推进。

您可以在repo1上设置repo2的跟踪分支,然后将它们保持不同,并将合并延迟到任何时候。