name: clean-branches description: Delete local branches whose remote has been deleted ([gone]), including their worktrees. Use for branch cleanup after merging PRs.
Clean Branches
Remove local branches that have been deleted on the remote (marked [gone]), including any associated git worktrees.
Steps
Fetch and prune remote refs:
git fetch --pruneList branches to identify [gone] status:
git branch -vBranches with a
+prefix have associated worktrees that must be removed before deletion.List worktrees for reference:
git worktree listRemove worktrees and delete [gone] branches:
git branch -v | grep '\[gone\]' | sed 's/^[+* ]//' | awk '{print $1}' | while read branch; do echo "Processing branch: $branch" worktree=$(git worktree list | grep "\\[$branch\\]" | awk '{print $1}') if [ ! -z "$worktree" ] && [ "$worktree" != "$(git rev-parse --show-toplevel)" ]; then echo " Removing worktree: $worktree" git worktree remove --force "$worktree" fi echo " Deleting branch: $branch" git branch -D "$branch" doneReport which branches and worktrees were removed. If none were
[gone], say no cleanup was needed.