Published in


Delete All Git Branch Except 1 With Bash Script

When coding a project in a team, having multiple branches of Git repository is unavoidable, and later it’ll make our workspace bloated with branches that we don’t use anymore.

Photo by Thought Catalog on Unsplash

Deleting a single local Git branch in our machine is quite simple:

git branch -D <branch_name>

But if we have more than 10 branches (which is very possible) repeating that command is a bad choice and takes time. Then I search the internet about the git command on how to delete all branches except the master.

Why the master branch? Because the default root branch in Git is master and many programmers use the code inside it as the base code before deploying the application. And here’s what I found:

git branch | grep -ve " master$" | xargs git branch -D

That command is consists of multiple commands that produce multiple results, there are:

  1. List all branch’s name that has a prefix of master
  2. Take all that branch’s name and pass it as the argument into
    git branch -D command.

I tried the command and it works flawlessly, but it got 1 problem. It is the name of the branch. I think we as a programmer will sometime need to delete all existing branches including the master, but excluding the other name.

So I decided to create a simple bash script to run a git command, which can delete all branches except 1 branch.

The script is simple, it’s only taking a single argument that will replace the branch name inside the git command.

Here is the script:

To run the script you just need to type:

./script.sh <branch_name>

Simple right?

If you want to view the complete script, that has a help page, you can see it from my repo:

Have a nice day! 🖖



Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store