Clean up branches that have been merged or are no longer needed.
Use Case
- •Remove merged feature branches after PR merge
- •Clean up stale branches that haven't been used
- •Keep repository tidy with minimal branch clutter
Process
- •Fetch latest:
git fetch --prune origin - •Find merged branches:
git branch --merged main - •Identify targets: Exclude protected branches (main, master, develop)
- •Show preview: List branches to be deleted
- •Confirm with user: Ask before deletion
- •Delete: Remove from local and optionally remote
Branch Detection
Merged Branches
bash
# Local branches merged into main git branch --merged main # Remote branches merged into main git branch -r --merged origin/main
Stale Branches (Optional)
Branches with no commits in N days:
bash
git for-each-ref --sort=-committerdate --format='%(refname:short) %(committerdate:relative)' refs/heads/
Safety Features
- •Protected branches: Never delete main, master, develop
- •Current branch: Never delete the branch you're on
- •Preview first: Always show what will be deleted before doing it
- •User confirmation: Require explicit yes before deletion
- •Remote caution: Extra confirmation for remote branch deletion
Execution Steps
- •Run
git fetch --prune originto sync - •Detect default branch (main or master)
- •Run
git branch --merged <default>for local - •Run
git branch -r --merged origin/<default>for remote - •Filter out protected branches
- •Show preview to user
- •Ask for confirmation
- •Delete confirmed branches:
- •Local:
git branch -d <branch> - •Remote:
git push origin --delete <branch>
- •Local:
Examples
Basic cleanup:
code
/stylish-cleanup-branch → Fetching and analyzing branches... → Found 3 merged branches: Local (merged into main): - feature/add-button - feature/fix-header - bugfix/typo Protected (skipped): - main - develop → Delete these 3 local branches? (y/n) → Deleted 3 branches ✅
With remote cleanup:
code
/stylish-cleanup-branch --remote → Found 5 merged branches: Local: - feature/add-button - feature/fix-header Remote: - origin/feature/old-feature - origin/feature/completed-work - origin/bugfix/fixed → Delete 2 local + 3 remote branches? (y/n) → Deleted 5 branches ✅
Nothing to clean:
code
/stylish-cleanup-branch → Fetching and analyzing branches... → No merged branches found ✅ → Repository is clean
Dry run:
code
/stylish-cleanup-branch --dry-run → Would delete (dry run): - feature/add-button - feature/fix-header → Run without --dry-run to delete