背景
A
项目由 B
项目变体而来,在 A
上进行到一些共同性修改需要同步到 B
项目上
A
的git地址为:A.git
B
的地址为:B.git
解决方案
把A的具体提交合并到B上
思路是把 A
中修复问题的提交(commit)合并到 B
中
这样做合并到文件更加具体,造成的冲突会很少
- 在项目
A
中
git checkout -b fix_bug
从当前分支创建分支,同时切换到这个分支 - 在项目
B
中
git remote add origin_A A.git
添加A的远程地址
git pull origin_A
git cherry-pick <SHA>
把指定commit合并到当前分支
把A的一个分支合并到B上
思路是在 A
项目中新建一个分支修改问题,修改完毕后发布分支,在 B
项目中合并这个分支
需要注意的是执行分支合并时会把目标分支的所有文件都拉到当前分支,如果两个分支差异较大的话会产生很多冲突
- 在项目
A
中
git checkout -b fix_bug
从当前分支创建分支,同时切换到这个分支 - 在项目
B
中
git remote add origin_A A.git
添加A的远程地址
git pull origin_A
git checkout -b fix_bug origin_A/fix_bug
从A中拉取要合并的分支
git merge fix_bug --allow-unrelated-histories
把fix_bug合并到当前分支,不加allow-unrelated-histories
命令会报fatal: refusing to merge unrelated
错误,因为git默认不支持合并不同仓库的分支