2

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

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

从这个原始的 one-commit repo 中,分别制作两个单独的克隆 in/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

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

4

2 回答 2

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 个本地分支:mastertrackingrepo1/mastermaster2tracking repo2/master

如果你git log master,它看起来像L, K, J, ..., C, B, A.

如果你git log master2,它看起来像V, U, T, ..., N, M, A.

于 2013-02-27T09:13:24.957 回答
0

看起来没那么难。

首先,如果要将它们合并到一个 repo 中,则必须有两个分支。

只需将 clone1 推送到远程调用 branch1

并将 clone2 推送到远程调用 branch2

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

兄弟,蒂姆

于 2013-02-27T04:25:22.463 回答