git合并不同仓库的修改

Posted herr_edoc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了git合并不同仓库的修改相关的知识,希望对你有一定的参考价值。

git合并不同仓库的修改

有时候新的方案衍生至老的方案,很多问题在老方案都有解决方案了,如何把老方案的修改合并到新的方案?
除了可以生成patch,然后再合并patch的方式之外,这里提供另一种解决方法,前提是在两个仓库中的代码路径是一致的,文件名是一致的,这样子才能cherry-pick过去,如果不一致,cherry-pick命令无法找到对应的文件修改。


例如:
方案1放在仓库ssh://text@git.xxx.cn/PROJECT1/source/base/android/external
方案2放在仓库ssh://text@git.xx.cn/PROJECT2/source/base/android/external
现在需要把方案1的trunk分支的修改(这里假设该修改的commit id为CommitID_Modification)合并到方案2的trunk分支上。

1.在方案2的trunk分支下添加方案1的远程仓库, 其中PROJECT1为远程仓库在本地的别名,默认为origin,这里需要重新取一个名字

git remote add PROJECT1 ssh://text@git.xxx.cn/PROJECT1/source/base/android/external

2.在方案2本地仓库下新建分支Project1_trunk并切换过去

git branch Project1_trunk
git checkout Project1_trunk

3.Project1_trunk分支下,需要将代码回退到方案1和方案2没有冲突的节点上,不然拉不下代码。如果不清楚是哪个节点,可以直接回退到第一个节点,即新建仓库的节点,这里假设第一个节点为CommitID_1。这一点比较关键,如果没有做这个操作的话,会一直拉不下来代码,出现冲突。

git reset CommitID_1 --hard

4.同步方案1的对应分支的代码到本地

git pull PROJECT1 trunk:Project1_trunk

5.切换回方案2的trunk分支

git checkout trunk

6.将方案1的修改CommitID_Modification cherry-pick到方案2

git cherry-pick CommitID_Modification

7.如果出现冲突则解决冲突即可

以上是关于git合并不同仓库的修改的主要内容,如果未能解决你的问题,请参考以下文章

Git-合并两个不同的仓库

Git-合并两个不同的仓库

Git-合并两个不同的仓库

git 提交问题

合并两个不同远程仓库的Git命令

合并两个不同远程仓库的Git命令