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

时间:2008-10-28 20:18:37

标签: git

我的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用户指南等等。但是,这种(特殊)使用情况似乎没有记录在任何地方。

3 个答案:

答案 0 :(得分:71)

您可以在与远程仓库相同的文件系统上处理另一个git存储库。

首先,执行以下操作:

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

现在,它们都是单个存储库中的分支。您可以使用git checkout,与git merge合并等进行切换。

答案 1 :(得分:6)

你的图片表明你真的不想“合并两个存储库”,因为合并提交G和H到repo1。您应该能够做一些简单的事情,例如将repo2添加为repo1的远程数据并获取/提取更改。

答案 2 :(得分:3)

我认为吉姆是对的。还要记住,如果两个提交对代码执行完全相同的patch / diff,它们将具有完全相同的SHA1哈希。所以A到E应该在两个repos中都有相同的SHA1,所以从一个到另一个合并不应该是一个问题,并保持合并的repo作为唯一的repo继续前进。

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