Clean Branches

Delete local branches whose remote has been deleted ([gone]), including their worktrees. Use for branch cleanup after merging PRs.

kdlbs 3769b40 1.3 KB Updated

File contents

Clean Branches

Remove local branches that have been deleted on the remote (marked [gone]), including any associated git worktrees.

Steps

  1. Fetch and prune remote refs:

    git fetch --prune
    
  2. List branches to identify [gone] status:

    git branch -v
    

    Branches with a + prefix have associated worktrees that must be removed before deletion.

  3. List worktrees for reference:

    git worktree list
    
  4. Remove 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"
    done
    
  5. Report which branches and worktrees were removed. If none were [gone], say no cleanup was needed.

kdlbs/kandev/tree/main/.agents/skills/clean-branches commit 3769b409d8

Frequently asked questions

npx skillmds@latest add kdlbs/clean-branches