Git 跨仓库源同步代码合并
场景
业务需要从主代码仓库中fork出新代码仓库做定制化平台功能,后续各自迭代自身不同版本一段时间后,主代码仓库上线了某个新功能,希望同步到新平台,但历史其他版本隔离不做同步。
可以借助代码对比工具,手动复制代码提交,相对麻烦且容易遗漏;
后续尝试下面方案:在本地仓库添加多个远端源,之后正常的git命令操作就可以。
添加主仓库作为远程源
1 | # 添加一个新的远端仓库 |
不同仓库间的分支可直接merge
如果希望分支之间的改动全量同步,本地分别拉取不同仓库对应分支,直接merge就可以。
1 | 24115@fuyf MINGW64 /e/My-Git/largeFileUploadNew (feature/n1) |
通过cherry-pick只合并特定的提交(SHA值)
1 | # 建议操作前新建一个专门的merge分支 |
为什么用cherry-pick? 它只复制指定提交的更改,而不引入主仓库的其他历史记录(只合并指定的commit当次提交)。相比git merge,它避免了不相关的提交影响。
如果发生冲突,Git会暂停合并;需要手动编辑文件解决冲突,跟正常的分支合并时发生冲突表现一致,不同的是在冲突解决后, 需要运行git cherry-pick –continue 继续进行剩下的cherry-pick,直至全部合并完成
1 | git cherry-pick --continue |
cherry-pick合并完成后,与主分支对比差异,确认无误后将merge分支合并到目标分支即可,结束。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 Indifferent!
评论