-
-
Save stephanschubert/f26346f0a45a7cce13bc to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/bin/bash | |
# git-cleanup-repo | |
# | |
# Author: Rob Miller <[email protected]> | |
# Adapted from the original by Yorick Sijsling | |
# | |
# * 2015/11/05 - Fixed formatting issues (Stephan Schubert) | |
KEEP_BRANCHES='(master|staging|ci-[0-9]+)$' | |
git checkout master &> /dev/null | |
# Make sure we're working with the most up-to-date version of master. | |
git fetch | |
# Prune obsolete remote tracking branches. These are branches that we | |
# once tracked, but have since been deleted on the remote. | |
git remote prune origin | |
# List all the branches that have been merged fully into master, and | |
# then delete them. We use the remote master here, just in case our | |
# local master is out of date. | |
git branch --merged origin/master | egrep -v "$KEEP_BRANCHES" | xargs git branch -d | |
# Now the same, but including remote branches. | |
MERGED_ON_REMOTE=`git branch -r --merged origin/master | sed 's/ *origin\///' | egrep -v "$KEEP_BRANCHES"` | |
if [ "$MERGED_ON_REMOTE" ]; then | |
echo "The following remote branches are fully merged and will be removed:" | |
echo $MERGED_ON_REMOTE | |
read -p "Continue (y/N)? " | |
if [ "$REPLY" == "y" ]; then | |
git branch -r --merged origin/master \ | |
| sed 's/ *origin\///' \ | |
| egrep -v "$KEEP_BRANCHES" | |
| xargs -I% git push origin :% 2>&1 \ | |
| grep --colour=never 'deleted' | |
echo "Done!" | |
fi | |
fi | |
git checkout master &> /dev/null |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment