git: Delete All Branches but Master

By  on  

Maintenance is incredibly important in any project, but if you want to take your professionalism to the next level, you should keep your git environment in shape.  Unfortunately I'm not that guy -- I leave git branches laying around, even after they've been merged into master.  GitHub even provides a button to do the cleanup but I can't be bothered.  Not good.

When you're ready to do some real cleanup on a repository, throw this at it:

git branch | grep -v "master" | sed 's/^[ *]*//' | sed 's/^/git branch -d /' | bash

The shell command above deletes every branch in your local checkout except for master branch.  This is a dangerous script but you could always check out a given branch from a remote like GitHub if you happen to need it!

Recent Features

  • By
    CSS Animations Between Media Queries

    CSS animations are right up there with sliced bread. CSS animations are efficient because they can be hardware accelerated, they require no JavaScript overhead, and they are composed of very little CSS code. Quite often we add CSS transforms to elements via CSS during...

  • By
    39 Shirts – Leaving Mozilla

    In 2001 I had just graduated from a small town high school and headed off to a small town college. I found myself in the quaint computer lab where the substandard computers featured two browsers: Internet Explorer and Mozilla. It was this lab where I fell...

Incredible Demos

  • By
    Animated AJAX Record Deletion Using Dojo

    I'm a huge fan of WordPress' method of individual article deletion. You click the delete link, the menu item animates red, and the item disappears. Here's how to achieve that functionality with Dojo JavaScript. The PHP - Content & Header The following snippet goes at the...

  • By
    CSS Counters

    Counters.  They were a staple of the Geocities / early web scene that many of us "older" developers grew up with;  a feature then, the butt of web jokes now.  CSS has implemented its own type of counter, one more sane and straight-forward than the ole...

Discussion

  1. The script becomes less dangerous, when it uses the

    git branch -d

    variant instead of the upper case -D. Then branches are only deleted, when they are already merged in any of the remaining branches, and no work is lost. (Also, the error messages show you, which branches have work, that has not yet landed in master.)

  2. git remote prune origin -)

  3. lev
    git branch | grep -v "master" | xargs git branch -d
  4. Allie F

    Thank you, this worked well for me. I first tried it with -d, which deleted some, and then decided to go for -D, which did end up deleting everything but master.

Wrap your code in <pre class="{language}"></pre> tags, link to a GitHub gist, JSFiddle fiddle, or CodePen pen to embed!