How to delete all your local branches but keep master

Ben Halpern on April 27, 2019

I find myself searching for this git one-liner a lot, so I figured I'd drop it here to help future searchers: git branch | grep -v "master" | xa... [Read Full]
markdown guide
 

Or better, delete everything merged into master, leaving out branches that can contain work in progress

git branch --merged master | grep -v "master" | xargs git branch -D
 

I was waiting for instructions to rm -fr the project and git clone it again πŸ˜‰ this is much better!

 

rm -rf is such a danger. I heard about how dangerous it is, but was oblivious to its power until I deleted a valuable folder!

 
 

PowerShell in Windows has slightly different syntax, but you can achieve the same result with the line below :)

git branch | Select-String -NotMatch -Pattern "master" | %{ git branch -D $_.ToString().Trim() }
 

Thanks, I should definitely look into Powershell a bit more (first time on a contract for a client with a Windows stack)

 

I mean, this is cool and all, but PS syntax is too explicit imo

 
 

Why though, shouldn't all developers have local admin on workstations?

Or at the very least, shouldn't you be able to request a change in these policies for work-related purposes?

currently downloading using the Microsoft store is blocked by the corporate proxy, but maybe there are other ways to get the Linux Subsystem up and running?

Set up a forwarder when at home; use it from the office. :)

 
 

The feeling you've after the command finishes execution

Like a boss

PS: Don't forget to run git checkout master

 

Just make sure to back up everything first :P

git push --all {remote}

Oh man if I forgot to back up first...that would ruin so many things for me. We have a tendency to re-prioritize things so some branches are left half done for awhile, sometimes many months.

 

Wow that was perfect as I was deleting about multiple local branches manually!

Left with two and tried that one above and worked fabulously!

demo

 
 

Here's one if you want to keep both master and develop:

> git branch | grep -v "master\|develop" | xargs git branch -D
 
 

A handy one indeed @ben . I went one step further and created an alias "git repo cleanup" in my ~/.bash_rc . Keeping a clean local is super helpful when projects get large and dozens of devs have you reviewing / checking / assisting daily.

 
 

Is there any way to merge everything in master before deleting?

 

It's generally not a good idea. If you finished working on a feature branch, merge it. If a branch isn't merged, it contains work in progress. Work in progress means something isn't working there. Also mass merging often leads to lots of conflicts.

 
code of conduct - report abuse