GIT 提交记录文件拆分 适用于已推送到远程的提交拆分场景

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

操作步骤:

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 结束流程