我们有两个 Git 存储库。
存储库 1。提交:A、B、C。此存储库是根据 SVN 历史创建的。
Repo 2. 提交:D、E、F。这个存储库是在没有 SVN 历史记录的情况下创建的,只是使用成为提交 D 的工作副本(从提交 C 开始)。换句话说,提交的文件树C和D是一样的。
现在,我们想要 merge 两个存储库,以便我们在一个存储库中拥有完整的历史记录。有没有办法将所有提交的 E..F“复制/ rebase /其他”到 C?
最佳答案
最简单的做法是将 Repo 2 添加为 remote在 Repo 1 中使用它在磁盘上的物理路径 然后简单地 cherry pick在 C
之上提交 E
和 F
。
因此,在 Repo 1 中,您可以:
git remote add repo2 C:\Path\To\Repo2
git fetch repo2
然后,假设 E
和 F
是 Repo 2 中 master
分支中的最新两个提交,并且C
是 Repo 1 中 master
中的最新提交,如下所示:
master
/
A-B-C
repo2/master
/
D-E-F
你会这样做:
git checkout master
git cherry-pick repo2/master~2..repo2/master
这将在 C
之上应用提交 E
和 F
的补丁:
master
/
A-B-C-E'-F'
repo2/master
/
D-E-F
请注意,我在这里挑选了一个提交范围,这是受支持的 since Git 1.7.2 .
关于git - 如何从另一个具有不同历史记录的存储库重新提交提交?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37673813/