Created
July 28, 2018 18:58
-
-
Save peterwwillis/a45b70bf945f2db1571199e0546fdda8 to your computer and use it in GitHub Desktop.
Prune Git's local orphan references, merged feature branches, remote tracking references, and more
This file contains hidden or 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 | |
# Prune local orphan refs | |
git prune -v | |
# Deletes all stale (local) remote-tracking branches under origin. | |
# These stale branches have already been removed from the remote repository | |
# referenced by <name>, but are still locally available. | |
git remote prune origin | |
# After fetching, remove any remote-tracking references that no longer exist on the remote. | |
git fetch --all --prune | |
# Delete all local branches that are already merged into master (excluding master, dev, and current branch) | |
git branch --merged master | sed -e 's/^[[:space:]]\+//g' | egrep -v "(^\*|master|dev)" | xargs git branch -d | |
# Delete all *remote* branches in origin that are already merged into master: | |
git push && | |
git pull && | |
git branch -r --merged master | sed -e 's/^[[:space:]]\+//g' | egrep -v "(^\*|master|dev)" | grep ^origin/ | sed -e 's/^origin\///g' | xargs -n 1 git push --delete origin | |
# Clean up removed remotes again, just in case | |
git remote prune origin | |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment