GIT 提交记录文件拆分 适用于已推送到远程的提交拆分场景
无需修改原分支的提交历史,安全灵活,适合绝大多数场景(尤其是原提交已推送到远程的情况)
操作步骤:
1、先拉取远程最新分支(防止本地找不到分支)
git fetch origin2、切换到你要合入代码的目标分支
git checkout uat3、切换完后拉一下最新代码,保证分支干净
git pull4、执行带--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 --abortgit cherry-pick --skip 结束流程
IDE 可视化操作替代(不想敲命令)
- 选中下面 2 个文件:b模板、m 模板,点右侧【Accept Yours】(你的分支无文件,直接丢弃对方修改)
- 选中
template.json,点【Accept Yours】丢弃 - 选中
template.json,点【Accept Theirs】保留截取逻辑 - 全部处理完点 Merge,再执行 commit 提交即可,最后命令行
git cherry-pick --skip结束流程
