2011-05-09 161 views
2

我有两个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。

回答

1

看看git rebase --preserve-merges --onto。将第二个回购的提交提交到第一个回购后,您可以移动部分历史记录以拥有您想要的祖先。

希望这会有所帮助。

编辑:

要想从第二回购的变化,将其添加为远程:

git remote add secondary <url to your secondary repo> 

然后你就可以从中获取:

git fetch secondary 

现在你可以检查gitk --allgit log --all --graph --decorate --oneline,并做你喜欢的rebase --onto

+0

您应该包括如何从第二个回购提交到第一个提交;这将使这个很棒的答案。 – ebneter 2011-05-09 23:32:25

+0

完成。希望这是足够的信息。 – 2011-05-09 23:42:13

相关问题