Igo*_*hin 6 git version-control merge rebase
我们有两个Git存储库.
回购1.提交:A,B,C.此存储库是根据SVN历史记录创建的.
Repo 2.提交:D,E,F.这个存储库是在没有SVN历史的情况下创建的,只是使用工作副本(作为提交C),它成为提交D.换句话说,提交C和D的文件树是相同的.
现在,我们想要合并两个存储库,以便在一个存储库中拥有完整的历史记录.有没有办法将所有提交E..F"复制/改组/其他"复制到C?
最简单的方法是使用其在磁盘上的物理路径在Repo 1中添加Repo 2作为远程,然后简单地选择提交并在之上.EFC
那么,在Repo 1中你会这样做:
git remote add repo2 C:\Path\To\Repo2
git fetch repo2
Run Code Online (Sandbox Code Playgroud)
然后,假设E与F处于最新的两次提交master在分支回购2和C是最新的犯master在回购1,如下所示:
master
/
A-B-C
repo2/master
/
D-E-F
Run Code Online (Sandbox Code Playgroud)
你会这样做:
git checkout master
git cherry-pick repo2/master~2..repo2/master
Run Code Online (Sandbox Code Playgroud)
这将应用来自提交的补丁,E并F在C:
master
/
A-B-C-E'-F'
repo2/master
/
D-E-F
Run Code Online (Sandbox Code Playgroud)
请注意,在这里,我正在挑选一系列提交,这是自Git 1.7.2以来支持的.