2014-02-13 20 views
0

我有一个回购名为回购A,其中包含两个项目。目标是移动项目B回购A。有人这样做,但在我们可以删除旧位置的依赖之前,其他人向项目B的旧位置提交了承诺。更糟糕的是,其他人似乎也增加了对回购B /项目B的承诺。Git - 将文件移动到另一个回购和保留源

什么是最简单的方法来将这些更改全部合并到回收B,同时保留历史记录?

回答

1

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

如果变化并不多:

在回购A - B项目

  1. 锁定了,没有更多的编辑。 (也许你已经有了)
  2. 通过查看输出标识移动到回购B之后都进行了提交:

    git log 
    

在回购乙 - 项目B

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

    git cherry-pick 22c5679c160c5f64f5f58109fe62be683fc896f4 
    
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 
相关问题