## Delete all local (and already merged/deleted) branches not on remote. git fetch -p && git branch -vv | grep ': gone]' | awk '{print $1}' | xargs git branch -D # Prune any branches that no longer exist on remote from our "remotes" list. git fetch -p # Show sha1 and commit subject line for each head, along with relationship to upstream branch (if any). # Print the name of the upstream branch, as well. git branch -vv # Filter and only show branches that have been removed on the remote. grep ': gone]' # Print first column only. awk '{print $1}' # build and execute command lines from standard input xargs # Delete local branch that has same name as one of the branches we isolated in previous steps. git branch -D