我有一个回购名为回购A,其中包含两个项目。目标是移动项目B出回购A。有人这样做,但在我们可以删除旧位置的依赖之前,其他人向项目B的旧位置提交了承诺。更糟糕的是,其他人似乎也增加了对回购B /项目B的承诺。Git - 将文件移动到另一个回购和保留源
什么是最简单的方法来将这些更改全部合并到回收B,同时保留历史记录?
我有一个回购名为回购A,其中包含两个项目。目标是移动项目B出回购A。有人这样做,但在我们可以删除旧位置的依赖之前,其他人向项目B的旧位置提交了承诺。更糟糕的是,其他人似乎也增加了对回购B /项目B的承诺。Git - 将文件移动到另一个回购和保留源
什么是最简单的方法来将这些更改全部合并到回收B,同时保留历史记录?
这将是单调乏味的,但如果出现冲突,应该很容易解决。
如果变化并不多:
在回购A - B项目
通过查看输出标识移动到回购B之后都进行了提交:
git log
在回购乙 - 项目B
git cherry-pick commit-hash-from-step-2-above
,示例命令:
git cherry-pick 22c5679c160c5f64f5f58109fe62be683fc896f4
这会很快让您在一个步骤中完成所有更改,但解决冲突可能会更困难。
如果变化是多方面的,但你必须在那里为项目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