Git - 将文件移动到另一个仓库并保留源

时间:2014-02-13 14:53:50

标签: git

我有一个名为 Repo A 的回购,其中包含两个项目。目标是将项目B 移出回购A 。有人这样做了,但在我们删除旧位置的依赖关系之前,其他人提交了 Project B 的旧位置。更糟糕的是,其他人似乎也加入了对 Repo B / Project B 的承诺。

在保留历史记录的同时,将这些更改整合到回购B 中的最简单方法是什么?

2 个答案:

答案 0 :(得分:1)

这将是乏味的,但如果出现冲突,它们应该很容易解决。

如果变化不多:

在回购A - 项目B

  1. 将其锁定,不再进行编辑。 (可能你已经有了)
  2. 通过查看以下内容的输出来确定在转移到Repo B之后完成的提交:

    git log
    
  3. 在回购B - 项目B

    1. git cherry-pick commit-hash-from-step-2-above,示例命令:

      git cherry-pick 22c5679c160c5f64f5f58109fe62be683fc896f4
      

答案 1 :(得分:0)

这将很快一步完成所有更改,但冲突解决可能会更难。

如果更改很多,但您有一个定义良好的文件夹结构,其中项目A与项目B隔离,您将拥有:

repoA/
  projectA/
  projectB/

repoB/
  projectB/

所以,你可以:

从repoA获取所有代码

cd repoB
git remote add origin2 url-for-repoA
# I assumed the master branch, could be other.
git pull origin2 master    

结果将是:

repoA/
  projectA/
  projectB/

repoB/
  projectA/
  projectB/ <-- probably with conflicts waiting to be resolved

清理:

cd repoB
git reset --hard HEAD projectA/    
git remote remove origin2

结果:

repoB/
  projectB/ <-- still with conflicts waiting to be resolved