GitHub Merge Queue Rollback Stuck: Unblock Incident Reverts Fast (2026 Guide)
Your rollback PR is approved, checks looked fine, but merge queue still does not land it. During incidents, this is one of the most stressful GitHub states because nothing is obviously broken yet production is still impacted.
This guide is a practical triage runbook for queue-stuck rollback PRs: how to identify where the bottleneck is, unblock safely, and keep branch protection intact.
Table of contents
1. Quick decision table
| Symptom | Primary action | Why this works |
|---|---|---|
Checks show Pending for long time |
Verify merge-group workflow trigger and rerun from latest queue snapshot | Queue often runs checks in merge-group context, not plain PR context. |
| Checks pass once, then queue restarts repeatedly | Rebase rollback branch to latest protected tip and requeue | Stale queue snapshots can invalidate earlier green runs. |
| Another queued PR keeps failing | Escalate rollback priority and clear failing queue noise per policy | Queue starvation can block incident rollback throughput. |
| Approvals exist but merge still blocked | Check non-CI policy gates (labels, CODEOWNERS, signatures, env rules) | Queue-ready is broader than CI green status. |
| Rollback urgency increasing | Use formal emergency exception path, never ad-hoc force-push | Maintains auditability and reduces secondary incidents. |
2. Why rollback PRs get stuck in queue
Most stuck rollbacks are caused by one of these patterns:
- Merge-group context mismatch: required checks run against queue-generated merge groups and may not match plain PR checks.
- Snapshot churn: high commit velocity causes rollback PR snapshots to become stale before merge.
- Flaky required checks: retry loops create random queue delay during incident windows.
- Hidden policy blockers: label requirements, CODEOWNERS, signatures, deployment environment rules.
- Queue starvation: failing or long-running neighboring entries consume queue capacity.
3. 5-minute triage checklist
- Confirm rollback PR branch is based on current protected target tip.
- Open required checks panel and identify pending vs failing vs skipped.
- Verify merge-group workflow triggers are enabled for required pipelines.
- Check policy gates: labels, CODEOWNERS, signed commits, environment approvals.
- Inspect queue neighbors for repeated failures and long runners.
- Requeue with explicit incident note in PR description and timeline.
4. Queue-safe unblock workflow
Use this sequence when rollback stays queued too long:
- Create a fresh rollback branch from
origin/main(or your protected target). - Apply minimal revert commit(s); avoid any unrelated cleanup.
- Push branch, open PR, and mark as incident rollback.
- Validate required checks in merge-group context, not only PR context.
- Patch only blockers, push, and requeue immediately.
- If queue noise is the blocker, coordinate with owners to pause or reorder per policy.
- Merge and run production verification checklist.
5. CLI command recipes
Start a fresh rollback branch from protected tip
git fetch origin
git switch -c rollback/incident-queue-stuck origin/main
# Apply exact revert(s)
git push -u origin rollback/incident-queue-stuck
Revert one merged PR (merge commit case)
git fetch origin
git switch -c rollback/pr-123 origin/main
git log --first-parent --merges --oneline -n 30
git revert -m 1 <merge-hash>
git push -u origin rollback/pr-123
Revert rebase/fast-forward range with single rollback commit
git fetch origin
git switch -c rollback/pr-123 origin/main
git revert --no-commit OLDEST^..NEWEST
git commit -m "Revert PR #123 after queue-stuck incident"
git push -u origin rollback/pr-123
Conflict recovery while keeping rollback branch clean
# Resolve conflicts in files
git add .
git revert --continue
# If wrong rollback target:
# git revert --abort
6. Incident operations playbook
- Assign incident owner and queue observer.
- Create rollback PR with impact summary and time target.
- Page required reviewers and CODEOWNERS early.
- Watch queue state transitions every few minutes.
- Record each queue reset/retry event in incident timeline.
- After merge, verify production health and close incident with exact revert hash.
If rollback was only a temporary mitigation, schedule reintroduction via controlled follow-up PR or revert-the-revert plan.
7. FAQ
Can queue-stuck rollback happen even when all checks are green?
Yes. Green PR checks do not always mean green merge-group checks, and policy gates can still block merge readiness.
Should incident rollback bypass merge queue entirely?
Not by default. Queue-safe rollback should be your standard path. Use emergency bypass only through a documented exception process.
What is the fastest safe fix for flaky required checks?
Rerun from a fresh queue snapshot and keep rollback delta minimal. Mixed rollback+refactor changes increase flaky surface area. Use the Flaky Required Checks Guide for stabilization patterns.
How is this different from required-check failure troubleshooting?
This guide focuses on queue starvation and broad pending-state triage. For direct required-check failures, use Required Checks Guide. For pending checks that never start, use Pending Checks Guide. For a trigger-level root-cause workflow, use Merge Queue merge_group Trigger Guide.
What if rollback itself was wrong after merge?
Create a corrective rollback or revert-the-revert PR. Do not rewrite protected branch history.
Related Resources
git revert -m used the wrong merge parent.
Git Commands Cheat Sheet
Fast command reference for incident-time rollback execution.