无需修改原分支的提交历史,安全灵活,适合绝大多数场景(尤其是原提交已推送到远程的情况)

操作步骤:

1、先拉取远程最新分支(防止本地找不到分支)

git fetch origin

2、切换到你要合入代码的目标分支

git checkout uat

3、切换完后拉一下最新代码,保证分支干净

git pull

4、执行带 --no-commit(简写 -n)的 cherry-pick,只应用改动、不自动生成提交:

git cherry-pick -n <要拆分的提交哈希>
  • 执行后,两个模块的 template.json 都会进入暂存区。

5、分两次提交,拆分两个功能

  先提交 b 服务发送的修改:

git commit bc-service/src/main/resources/atemp/template.json -m "发送:模板修改"

再提交 m 服务发送的修改

git commit M-service/src/main/resources/apitemp/template.json -m "发送模板修改"

这样就完成了拆分,目标分支会生成两个独立的提交,分别对应两个功能。

中途想放弃 cherry-pick 回滚

git cherry-pick --abort

git cherry-pick --skip   结束流程

IDE 可视化操作替代(不想敲命令)

  1. 选中下面 2 个文件:b模板、m 模板,点右侧【Accept Yours】(你的分支无文件,直接丢弃对方修改)
  2. 选中 template.json,点【Accept Yours】丢弃
  3. 选中 template.json,点【Accept Theirs】保留截取逻辑
  4. 全部处理完点 Merge,再执行 commit 提交即可,最后命令行 git cherry-pick --skip 结束流程
Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐