如何移植远程分支?

时间:2013-02-27 03:09:19

标签: git

这个问题的设置需要一些谨慎的措辞。

从最简单的存储库开始:一次提交(如果需要,可以为空)。

从这个原始的one-commit repo中,分别在/path/to/repo1/path/to/repo2中创建两个单独的克隆。现在想象这两个克隆中的每一个都独立于另一个克隆,演变为简单的线性历史。

如果A是克隆repo1repo2时原始存储库中的单个提交,则情况可能如下所示:

repo1:

A-----B-----C-----D-----E-----F-----G-----H-----I-----J-----K-----L


repo2:

A-----M-----N-----O-----P-----R-----S-----T-----U-----V

现在我想组合两个克隆,以便生成的提交图如下所示:

   ,--B-----C-----D-----E-----F-----G-----H-----I-----J-----K-----L
  /
 A
  \
   `--M-----N-----O-----P-----R-----S-----T-----U-----V

我尝试了许多方法,但我从来没有得到像上面那样的图表......

2 个答案:

答案 0 :(得分:3)

这适用于我,没有任何黑客攻击:

git clone -o repo1 path/to/repo1 target
cd target
git remote add repo2 path/to/repo2
git fetch repo2
git branch master2 repo2/master

此时,您将拥有2个本地分支:master跟踪repo1/mastermaster2跟踪repo2/master

如果您git log master,则会看起来像LKJ,...,CB,<强> A

如果您git log master2,则会看起来像VUT,...,NM,<强> A

答案 1 :(得分:0)

看起来并不那么困难。

首先,如果要将它们合并为一个仓库,必须有两个分支。

然后将clone1推送到名为branch1的远程

将clone2推送到远程调用,branch2

稍后,返回任何仓库并获取最新代码。

BR, 添