跨仓库 cherry-pick 以维护脚手架(及跨仓库 merge 以从脚手架更新代码)
A 库是脚手架,从 A 库 fork 到 B 库,然后 B 库按业务需求开发。B 库开发过程中修复了脚手架相关的问题,或者为脚手架添加了新特性。此时除了手动复制代码外,如何把这些变动应用到 A 库呢?
可以使用 cherry-pick。
cherry-pick 以维护脚手架
合并指定的一些提交到当前分支,可以用 cherry-pick 命令,为了实现在 A 仓库中合并 B 仓库的变更,首先需要让 A 仓库能读取到 B 仓库的提交记录,只需要 A 仓库中添加 B 仓库为远程仓库即可,然后拉取 B 仓库的提交记录,在 A 仓库中执行此命令:
git remote add fix {仓库 B 的地址}
git fetch fix
再执行 cherry-pick 即可合并到 A 模块:
git cherry-pick a514c5
其中 a514c5 是 B 仓库中所需要合入的提交记录的哈希值前缀。
merge 以从脚手架更新代码
B 库已经写有业务代码了,使用 merge 会将业务代码合并到 A 库中,所以上面不能用 merge 来操作。
但是如果 A 库有对脚手架的修改,那么可以使用 merge 将其合并到 B 库中。先切换到 B 库所需要合并的分支,然后在 B 库执行:
git remote add template {仓库 A 的地址}
git fetch template
其中 template 是 A 库的远程仓库名称,然后执行:
git merge template/master
这样 A 库中 master 分支的修改就会合并到 B 库的当前分支中了。
参考:
浙公网安备 33010602011771号