Batch Merge PRs by Label
Merge multiple PRs at once based on label matching.
When to Use
- •Multiple PRs are ready for merge with same status label
- •Automating merge of dependent chain of PRs
- •Merging all "ready-to-merge" or "approved" PRs
- •Batch processing end-of-sprint or release merges
- •Reducing manual merge overhead
Quick Reference
bash
# List PRs with specific label gh pr list --label "ready-to-merge" --state open # Merge single PR gh pr merge <pr> --squash --delete-branch # Get PR numbers for batch merge gh pr list --label "ready-to-merge" --json number --jq '.[].number' # Merge all PRs with label (requires loop) for pr in $(gh pr list --label "ready-to-merge" --json number --jq '.[].number'); do gh pr merge "$pr" --squash --delete-branch done
Workflow
- •Query PRs: Find all PRs with target label
- •Verify each: Check CI status and approvals for each PR
- •Check dependencies: Ensure no conflicts between PRs to merge
- •Sort by order: Merge in dependency order if applicable
- •Execute merges: Merge each PR in sequence
- •Verify success: Confirm all PRs merged successfully
- •Report results: Summary of merged PRs
Merge Options
Squash Merge (recommended):
- •Combines all commits into single commit
- •Clean git history
- •
--squashflag enables this
Create Merge Commit:
- •Preserves all commits
- •Clear merge history
- •Default behavior without
--squash
Rebase and Merge:
- •Linear history
- •
--rebaseflag enables this - •Good for feature branches
Safety Checks
Before batch merging:
- •CI Status: All checks passing
- •Approvals: Required number of approvals met
- •Conflicts: No merge conflicts detected
- •Dependencies: No blocked dependencies
- •Protected rules: All branch protection rules satisfied
Output Format
Report batch merge results with:
- •Total PRs - Count of PRs to merge
- •Merge Summary - PR number, title, status
- •Success Count - Number successfully merged
- •Failed Count - Number that failed to merge
- •Errors - Why any PRs failed
Error Handling
| Problem | Solution |
|---|---|
| CI failing | Skip that PR, check analyze-ci-failure-logs |
| Merge conflict | Resolve manually, cannot batch merge |
| No permissions | Check gh auth status and repo access |
| Branch protection | Verify all required rules met |
| Network error | Retry with exponential backoff |
References
- •See gh-review-pr for PR review checklist
- •See verify-pr-ready skill for pre-merge validation
- •See CLAUDE.md for PR linking requirements