Skip to content

Instantly share code, notes, and snippets.

@ryanc414
Last active July 12, 2022 12:17
Show Gist options
  • Save ryanc414/f7686d2c97808b41ed8518a5840e2d78 to your computer and use it in GitHub Desktop.
Save ryanc414/f7686d2c97808b41ed8518a5840e2d78 to your computer and use it in GitHub Desktop.
Delete merged git branches locally and on remote
#!/bin/bash
# Remove merged git branches locally and on remote(s)
set -e
# Script constants
BRANCH_WHITELIST="(\*|master|other-special-branches)"
REMOTES="origin" # Add more remotes here as space-separated list
echo "Deleting merged branches locally"
git branch --merged master \
| egrep -v "$BRANCH_WHITELIST" \
| xargs -r git branch -d
# Delete merged branches from each remote.
for remote in $REMOTES; do
echo "Deleting merged branches from $remote"
git fetch "$remote" --prune
for branch in $(git branch -r --merged master \
| grep "$remote" \
| egrep -v "$BRANCH_WHITELIST"); do
git push "$remote" --delete "${branch#*/}"
done
done
@braian87b
Copy link

@ryanc414 Thanks a lot!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment