我的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 :(得分: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的跟踪分支,然后将它们保持不同,并随时延迟合并。