git tip: Delete merged branches

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.

 

Advertisements

Leave a Reply

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

WordPress.com Logo

You are commenting using your WordPress.com 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