git tip: Delete merged branches

Update: This post is now available at a new location:

If you want to delete your local branches that have already been merged to master remotely, run this in a bash shell:

$ git branch -D `git branch --merged | grep -v '*' | xargs`

This deletes all branches that are merged, except the currently checked out branch (that’s the part with the start). So you should better run this while you’ve got the master branch checked out.

Update 2018-08-25: Powershell equivalent:

PS> git branch --merged | ? { $_ -notmatch '\*' } | ForEach-Object { git branch -d $_.Trim() }

A different way for bash:

$ git branch --merged | grep -v '*' | xargs git branch -d

Note that if you squash & merge (a popular option in GitHub and Bitbucket), then git branch --merged will not return these branches. In that case, try git branch -l but with the extra risk you might delete a branch you were still working on.



Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s