将分支移动到不同的存储库,同时保留其提交但聚合剩余的历史记录
Move branch to a different repository while preserving its commits but aggregating remaining history
我有两个存储库 A 和 B,它们包含不同的项目。在某个时候,我在回购 B 中创建了一个分支 'develop' 并在那里做了一些工作。
Repo A master a-a-a-a
Repo B master b-b-b-b
\
develop d-d-d-d-d
我现在想做的是将分支 develop 从 repo B 移动到 A,而它的所有提交都应该保留,但是 repo 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) 的整个历史,我不想要(或者实际上合并到一个提交中)。
关于如何做到这一点有什么建议吗?
谢谢
完成之后:
[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
和 repoB/master
这两个分支在你的仓库中,但没有连接。
你为什么不执行 rebase?
使用 -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'
其中 b'
是第 4 次提交 b
压缩后的提交
d'
是由提交 d
.
产生的提交
我有两个存储库 A 和 B,它们包含不同的项目。在某个时候,我在回购 B 中创建了一个分支 'develop' 并在那里做了一些工作。
Repo A master a-a-a-a
Repo B master b-b-b-b
\
develop d-d-d-d-d
我现在想做的是将分支 develop 从 repo B 移动到 A,而它的所有提交都应该保留,但是 repo 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) 的整个历史,我不想要(或者实际上合并到一个提交中)。
关于如何做到这一点有什么建议吗?
谢谢
完成之后:
[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
和 repoB/master
这两个分支在你的仓库中,但没有连接。
你为什么不执行 rebase?
使用 -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'
其中 b'
是第 4 次提交 b
压缩后的提交
d'
是由提交 d
.