自动合并是什么
GitHub 的自动合并(auto-merge)是一种排队机制:开启之后,PR 会在满足全部合并前置条件时自动合入,不需要人再点一次合并按钮。它自动化的只是最后一步,评审、必需检查、会话解决这些条件仍要由人推动达成,门禁不会被绕过。适合「CI 跑完就合」这类边界清晰的低风险改动。
基本信息
| 启用位置 | 仓库 Settings → General → Allow auto-merge |
|---|---|
| 使用方式 | PR 页面 Enable auto-merge,可先选定合并方式 |
| 触发条件 | 必需检查全部通过且审批满足时自动执行 |
| 命令行 | gh pr merge <编号> --auto --squash |
| 依赖 | 分支保护规则中定义的必需检查与审批要求 |
典型使用场景
- 依赖机器人升级、文档修订等低风险改动:检查通过就自动合入
- 跨时区协作:CI 在夜间通过后不必等人上线点击合并
- 同类小 PR 批量排队,减少重复的人工点击
- 团队要求统一合并方式(例如一律 squash)时,避免手动选错
常用示例
常用示例
gh pr merge 128 --auto --squash # 排队,条件满足后以 squash 方式合并
gh pr merge 128 --auto --merge # 指定以合并提交方式合入
gh pr view 128 --json mergeable,mergeStateStatus # 查看可合并状态与原因
gh pr checks 128 # 查看必需检查是否通过
gh pr view 128 --json reviewDecision # 确认审批是否已满足合并状态读法
| 状态 | 含义 | 处理方式 |
|---|---|---|
| BLOCKED | 有条件未满足(审批或检查) | 逐项确认缺口后再等 |
| BEHIND | 分支落后于基分支 | 更新分支后重新入队 |
| DIRTY | 存在冲突 | 解决冲突再推送 |
| CLEAN | 条件满足待合并 | 自动合并会执行 |
自动合并在分支保护允许的前提下才生效。如果 PR 被阻塞(缺少审批、检查失败),排队不会替你绕过门禁,需要先把阻塞项修好才会继续。
先开启自动合并再继续推大改动有风险:新提交一旦让检查重新通过,可能在你还没有复查时就被合入。更稳妥的顺序是推完、复查、再开启排队。