合并请求出错了怎么办
你在公司做开发,昨天提交了一个功能分支,经过代码审查后合并进了主干。结果今天早上产品经理急匆匆跑过来:「线上功能崩了!」你一查日志,发现问题就出在你昨天的那次合并上。这时候别慌,回滚是救火的常规操作。
什么是合并请求回滚
回滚不是删代码,而是用一次新的提交,把系统状态恢复到合并前的样子。比如你把 feature/login 分支合并到了 main,上线后发现登录逻辑有严重漏洞,就可以通过回滚操作撤销这次变更,让系统回到稳定状态。
Git 中如何执行回滚
最常用的命令是 git revert,它能生成一个反向提交,安全又可追溯。假设你刚刚合并的那次提交 hash 是 abc1234,你想撤销它:
git revert -m 1 abc1234这里的 -m 1 表示保留主分支(main)的代码结构,丢弃被合并分支的改动。如果你不加 -m 参数,Git 会报错,因为它不知道该保留哪边的变更。
回滚后要推送到远程
执行完 revert 后,本地只是多了一次新提交,必须推送到远程仓库才能生效:
git push origin main推送之后,CI/CD 流水线通常会自动触发部署,几分钟后线上环境就恢复正常了。
团队协作时的注意事项
回滚操作会影响整个团队的工作节奏。建议在执行前在群聊里说一声:「准备回滚昨天的合并,有问题尽快反馈」。万一有人已经在基于你的改动继续开发,直接回滚会造成冲突。
避免频繁回滚
回滚是应急手段,不是日常操作。如果项目经常需要回滚,说明测试流程或代码审查机制有问题。可以在合并前加自动化测试、预发布环境验证,甚至设置保护分支策略,防止未经审查的合并。
有一次我们组连续三天每天回滚两次,项目经理干脆把合并权限临时收走了,要求所有 PR 必须两人以上 review 才能合。从那以后,大家写代码更小心了。