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
    JavaScript Promise API

    While synchronous code is easier to follow and debug, async is generally better for performance and flexibility. Why "hold up the show" when you can trigger numerous requests at once and then handle them when each is ready?  Promises are becoming a big part of the JavaScript world...

  • By
    Camera and Video Control with HTML5

    Client-side APIs on mobile and desktop devices are quickly providing the same APIs.  Of course our mobile devices got access to some of these APIs first, but those APIs are slowly making their way to the desktop.  One of those APIs is the getUserMedia API...

Incredible Demos

  • By
    MooTools TextOverlap Plugin

    Developers everywhere seem to be looking for different ways to make use of JavaScript libraries. Some creations are extremely practical, others aren't. This one may be more on the "aren't" side but used correctly, my TextOverlap plugin could add another interesting design element...

  • By
    Duplicate the jQuery Homepage Tooltips

    The jQuery homepage has a pretty suave tooltip-like effect as seen below: The amount of jQuery required to duplicate this effect is next to nothing;  in fact, there's more CSS than there is jQuery code!  Let's explore how we can duplicate jQuery's tooltip effect. The HTML The overall...

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!