合并两个git仓库,保留所有提交历史
问题描述:
我有两个git仓库,每个仓库都包含相同代码库的不同版本。合并两个git仓库,保留所有提交历史
犯回购1(最近的最后一次):
version 1
version 2
version 3
version 4
version 5
犯回购2:
version 3
commit that isn't a new version
another commit that isn't a new version
yet another commit that isn't a new version
version 5
注意,在回购1,第5版是基于版本4,但在回购2,版本4不存在,因为版本5确实基于版本3(并且版本4本质上变成了被遗弃的分支)。
我喜欢把所有这一切都为一个回购协议:
version 1
version 2
version 3
branch version 4
commit that isn't a new version
another commit that isn't a new version
yet another commit that isn't a new version
version 5
我会很感激,如果有人可以解释不仅如何做到这一点,但为什么它是正确的做这样,我可以更好地理解git。
答
看看git rebase --preserve-merges --onto
。将第二个回购的提交提交到第一个回购后,您可以移动部分历史记录以拥有您想要的祖先。
希望这会有所帮助。
编辑:
要想从第二回购的变化,将其添加为远程:
git remote add secondary <url to your secondary repo>
然后你就可以从中获取:
git fetch secondary
现在你可以检查gitk --all
或git log --all --graph --decorate --oneline
,并做你喜欢的rebase --onto
。
您应该包括如何从第二个回购提交到第一个提交;这将使这个很棒的答案。 – ebneter 2011-05-09 23:32:25
完成。希望这是足够的信息。 – 2011-05-09 23:42:13