跨仓库 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 库的当前分支中了。

参考:

随手笔记:cherry-pick 实现跨仓库合并代码

多个 git 项目库之间的 cherry-pick 操作

GIT 不同仓库之间合并代码

posted @ 2025-04-12 00:47  Higurashi-kagome  阅读(72)  评论(0)    收藏  举报