将分支移动到不同的存储库,同时保留其提交但聚合剩余的历史记录

时间:2015-01-14 14:51:10

标签: git copy repository branch git-remote

我有两个存储库A和B,它们包含不同的项目。在某些时候,我创建了一个分支机构' develop'在回购B,并在那里做一些工作。

Repo A master  a-a-a-a

Repo B master  b-b-b-b
                      \
       develop         d-d-d-d-d

我现在要做的是将分支开发从回购B移动到A,而所有提交应该保留,但回购B的历史应该合并。所以最后看起来应该是这样的

Repo A master  a-a-a-a
                      \
       develop         d-d-d-d-d

Repo B master  b-b-b-b
                     \
       develop         d-d-d-d-d

如果我比较两个发展分支,它们应该是相似的。 我已经通过

实现了移动分支
- [Repo B] git remote add /url/to/RepoA
- [Repo B] git push RepoA develop

然而,这也包括Repo B(b-b-b-b)的整个历史,我不想要(或实际上合并为一次提交)。

有关如何执行此操作的任何建议吗?

由于

1 个答案:

答案 0 :(得分:2)

你做完之后:

[Repo B] git push RepoA develop

我想你会得到类似的东西:

Repo A master  a-a-a-a

repoB/master     b-b-b-b
                        \
         develop         d-d-d-d-d

即。 repoA/master这两个分支位于您的仓库中但未连接。

为什么不执行rebase? 使用repoB/master选项,以便您可以决定将-i提交压缩为一个提交(我认为这是您想要的) 命令是

b-b-b-b

然后,您将选择第一个提交git rebase -i master develop 并压缩以下提交 结果应该是:

b

其中Repo A master a-a-a-a \ develop b'-d'-d'-d'-d'-d' 是压缩4次提交b'的提交 而b是提交d'提交的提交。