2008-10-28 85 views
47

我的Git仓库的结构是这样的:如何将来自两个不同存储库的两个分支合并到一个存储库中?

A-B-C-D-E-F # master branch in separate repo1 
A-B-C-D-E-G-H # master branch in separate repo2 

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

之后的单一存储库应具有以下结构:

A-B-C-D-E-F # master branch of previous repo1 
     \ 
     \ 
      G-H # master branch of previous repo2 

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

+0

有时解决方案太简单了,不能自己弄清楚;) – 2008-10-28 23:45:40

回答

70

您可以将同一个文件系统上的另一个git存储库视为远程存储库。

在第一,不要执行下列操作:

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

现在,他们是在一个单一的存储库两个分支。你可以使用git checkout在它们之间切换,合并git merge等。

7

您的图片表明您并不真正想要“合并这两个存储库”,而是将提交G和H合并到repo1中。你应该可以做一些简单的事情,只要添加repo2作为远程repo1并获取/拉取更改。

4

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

您可以在repo1上为repo2设置一个跟踪分支,然后将它们保持截然不同,并将合并延迟到您想要的时间。

相关问题