-
-
Save htulipe/ba250e1c9231fad05e2a to your computer and use it in GitHub Desktop.
Clean up local branches that are already on master (credit to original gist)
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
function git-branch-current() { | |
printf "%s\n" $(git branch 2> /dev/null | grep -e ^* | tr -d "\* ") | |
} | |
function git-branch-cleanup() { | |
local currentBranch=$(git-branch-current) | |
local otherBranch= | |
for otherBranch in $(git branch | grep -v $currentBranch) ; do | |
printf "Branch %s:\n" "$otherBranch" | |
printf " HEAD commit is: %s\n" "$(git log --oneline -n 1 $otherBranch)" | |
local gerritChangeId=$(git log --format=full -n 1 $otherBranch | tail -1 | cut -d ':' -f 2) | |
if ! [ "$gerritChangeId" ] ; then | |
printf " HEAD of %s does not have a Gerrit Change-Id\n" "$otherBranch" | |
continue | |
fi | |
local mergedCommit=$(git log --oneline -n 1 --grep="$gerritChangeId" $currentBranch) | |
if [ "$mergedCommit" ] ; then | |
printf " Commit merged to %s: %s\n" "$currentBranch" "$mergedCommit" | |
local reply | |
read -p " Delete branch $otherBranch [y/N]? " reply | |
reply=${reply:-n} | |
if [ $reply = "y" ] ; then | |
git branch -D $otherBranch | |
fi | |
else | |
echo " Branch unmerged, moving on" | |
fi | |
done | |
} | |
git-branch-cleanup |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment