Git操作:如何避免分支A的revert提交合并时误改分支B?
操作方案
核心注意事项
禁止直接将A上的误提交commit cherry-pick到B分支,否则后续A合并到B时,A上的revert commit会识别到同源改动,直接抵消B分支上的对应内容,导致改动丢失。
标准操作步骤(适配A很快合并到B的场景)
第一步:清理A分支的误提交
- 切换到本地A分支并同步远程最新代码:
git checkout A && git pull - 生成误提交的回退commit:
git revert <误提交commit的哈希值> - 编写commit信息时必须明确标注:
revert: 回退误推至A分支的[改动内容说明],该改动仅需保留在B分支,禁止将本revert的效果同步到B,方便后续操作人员识别 - 推送改动到远程A分支:
git push origin A
第二步:恢复B分支的正常改动
待A分支按计划完成到B分支的合并后再执行以下操作:
- 切换到本地B分支并同步远程最新代码:
git checkout B && git pull - 回退之前在A分支生成的那条revert commit,恢复原改动内容:
git revert <A分支上生成的revert commit的哈希值> - 编写commit信息标注:
restore: 恢复[改动内容说明],仅在B分支生效 - 推送改动到远程B分支即可
备选快速操作方案(适配需要立即在B分支生效改动的场景)
如果不需要等待A合并到B,且改动内容量较小,可以直接在B分支基于最新代码重新编写一遍原改动内容,生成一条和A上误提交完全没有哈希关联的新commit,这种情况下Git不会识别到该commit和A上的revert commit的关联,后续两个分支互相合并时不会出现改动被误覆盖的问题。
额外风险规避措施
- 在代码托管平台的B分支保护规则中,添加合并校验要求:所有带
revert关键字的PR必须备注改动原因,提前拦截误操作 - 同步给后续负责B合并回A的开发人员,告知B分支存在针对A分支revert的反向恢复commit,合并时根据业务需要判断是否要带入A分支
内容的提问来源于stack exchange,提问作者Mr Patience
相关产品推荐
相关产品推荐

