部署与回滚分PR实施未达预期:原因排查及方案咨询
问题失效原因
你的回滚PR失效核心原因在于Git的三方合并逻辑:
- 回滚分支基于原始master创建,你先把配置改成新值提交、再改回旧值提交,最终回滚分支的
app.properties内容和原始master完全一致。 - 当实施PR合并到master后,master的提交历史已经包含「将配置改为新值」的提交。此时合并回滚PR时,Git会对比三者:合并后的master、回滚分支、两者的共同祖先(原始master)。
- Git发现回滚分支相对于共同祖先的最终内容没有变化,会判定回滚分支没有需要同步到master的有效变更,因此直接保留master当前的新配置状态——你改回旧值的提交只是回滚分支本地的往返操作,在Git合并逻辑里不被视为需要应用到master的变更。
正确创建回滚PR的方法
方法一:基于实施分支创建回滚分支
- 基于实施分支而非master创建回滚分支
- 将
app.properties改回旧值:test.base.certificate=abcd test.base.key=abcd - 提交变更并推送到远程
此时回滚分支与实施分支的差异就是「恢复旧配置」,实施PR合并到master后,合并回滚PR会直接将恢复操作应用到master,完成回滚。
方法二:用git revert生成回滚提交
- 基于master创建回滚分支
- 找到实施分支中「修改配置为新值」的提交ID,执行命令:
git revert <实施变更的提交ID> - Git会自动生成一个与实施变更完全相反的提交,将该提交推送到远程即可
这个提交的作用就是撤销实施的配置修改,合并到master后直接恢复旧配置。
内容的提问来源于stack exchange,提问作者Rahul
相关产品推荐
相关产品推荐

