Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Git 如何将来自两个不同存储库的两个分支合并到一个存储库中?_Git - Fatal编程技术网

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

Git 如何将来自两个不同存储库的两个分支合并到一个存储库中?,git,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 \

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

您的图片表明,您并不真的想“合并两个存储库”,而是将提交的G和H合并到repo1中。您应该能够做一些简单的事情,比如将repo2作为远程设备添加到repo1中,并获取/拉入更改。

我认为Jim是对的。还要记住,如果两个提交针对代码执行完全相同的补丁/差异,那么它们将具有完全相同的SHA1哈希。因此,A至E在两种回购协议中应具有相同的SHA1,因此从一种回购协议合并到另一种回购协议,并将合并后的回购协议保持为唯一可继续进行的回购协议,不应成为问题


您可以在repo1上为repo2设置一个跟踪分支,然后以这种方式保持它们的独立性,并将合并延迟到您想要的任何时候。

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

在第一种情况下,请执行以下操作:

git remote add <name> /path/to/other/repo/.git
git fetch <name>
git branch <name> <name>/master #optional
git远程添加/path/to/other/repo/.git
git获取
git分支机构/主机#可选

现在它们都是单个存储库中的分支。您可以使用git checkout、使用git merge等在它们之间切换。

有时解决方案太简单,您自己无法解决;)