| name | gh-batch-merge-by-labels |
| description | Batch merge multiple PRs by label (e.g., all 'ready-to-merge' PRs). Use when you have multiple approved PRs to merge. |
| category | github |
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
# 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