线上订单接口 500,本地改完直接 push main,远端回 remote: error: GH006: Protected branch update failed。命令行提示 required status check 还没跑。乍看像缓存或者权限的锅,追下去往往不是。

git switch -c hotfix/order-500
git push origin hotfix/order-500
gh pr create --base main --title 'hotfix: order 500' --body '紧急修复'

追下去是这么回事:分支保护规则要求走 PR、通过状态检查、至少一个审批,直接推送会被服务端拒绝。管理员豁免和规则作用范围是两套配置,人不在豁免名单里就一样被挡。

「分支保护热修」这个问题文档写得含糊,实际行为以当前版本为准,别照旧版本的结论套。验证用真实数据走一遍,测试数据太干净,边界情况根本碰不到。

能分两步做的操作就别合成一步,中间看一眼返回值,出问题好判断。报错里带路径的,先去看那个路径在不在、权限对不对。

具体做法是,从当前 main 拉 hotfix 分支 提交改动;推分支后用 gh pr create 开紧急 PR 说明影响面;用管理员权限临时合并 或走 bypass 列表;合并后把保护规则恢复 别长期留着口子;事后补一条告警 关注同类直接推送尝试。

验收就看一点,PR 合并后 main 上能看到这条修复 保护规则仍然开启。

作者 9823189