$ git branch | grep -v "master" | xargs git branch -D
will delete all branches except master (replace master with branch you want to keep, but then it will delete master)
Based on @pankijs answer, I made two git aliases:
[alias]
# Delete all local branches but master and the current one, only if they are fully merged with master.
br-delete-useless = "!f(){\
git branch | grep -v "master" | grep -v ^* | xargs git branch -d;\
}; f"
# Delete all local branches but master and the current one.
br-delete-useless-force = "!f(){\
git branch | grep -v "master" | grep -v ^* | xargs git branch -D;\
}; f"
To be added in ~/.gitconfig
And, as @torek pointed out:
Note that lowercase
-d
won't delete a "non fully merged" branch (see the documentation). Using-D
will delete such branches, even if this causes commits to become "lost"; use this with great care, as this deletes the branch reflogs as well, so that the usual "recover from accidental deletion" stuff does not work either.
Basically, never use the -force
version if you're not 300% sure you won't lose anything important. Because it's lost forever.
first (switch to the branch you want to keep > ex: master):
git checkout master
second (make sure you are on master)
git branch -D $(git branch)
Delete all branches except a specific branch:
git branch | grep -v "branch name" | xargs git branch -D
Delete all local branches except develop and master
git branch | grep -v "develop" | grep -v "master" | xargs git branch -D
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With