如何从另一个具有不同历史记录的存储库中重新提交提交?

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?

Enr*_*lio 8

最简单的方法是使用其在磁盘上的物理路径Repo 1中添加Repo 2作为远程,然后简单地选择提交并在之上.EFC

那么,在Repo 1中你会这样做:

git remote add repo2 C:\Path\To\Repo2
git fetch repo2
Run Code Online (Sandbox Code Playgroud)

然后,假设EF处于最新的两次提交master在分支回购2C是最新的犯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)

这将应用来自提交的补丁,EFC:

           master
          /
A-B-C-E'-F'
      repo2/master
     /
D-E-F
Run Code Online (Sandbox Code Playgroud)

请注意,在这里,我正在挑选一系列提交,这是自Git 1.7.2以来支持的.

  • 使用其路径添加本地遥控器很可爱 - 我不知道你可以这样做 (2认同)