-
-
Save malclocke/943565 to your computer and use it in GitHub Desktop.
$ git branch -r --merged | | |
awk -F'/' '/^ *origin/{if(!match($0, /(>|master)/)){print $2}}' | | |
xargs git push origin --delete |
It doesn't work for branches named like feature/123
The first command should be git branch -r --merged origin/master
. As it is, this script deletes any branch merged with some branch in origin.
This should fix the issue with feature branches:
git branch -r --merged origin/master \
| awk -F/ '/^\s*origin/ {if (!match($0, /origin\/master/)) {sub("^\\s*origin/", ""); print}}' \
| xargs -rpn1 git push origin --delete
The xargs
flags are as follows:
-n1 | delete branches one at a time |
-p | prompt the user for confirmation immediately prior to deleting a branch |
-r | ensure git push origin --delete with not be run if there are no branches to delete |
Thanks for sharing this! I'm getting the following error though:
xargs: illegal option -- r
usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr]
[-L number] [-n number [-x]] [-P maxprocs] [-s size]
[utility [argument ...]]
Anyone else getting this? Running on MacOS Sierra.
@talsafran Yep, -r is not an option on MacOS xargs (see: man xargs
)
-r is a GNU extension
You can install GNU xargs through Homebrew and the GNU findutils package.
brew install findutils
This will give you GNU xargs
as gxargs
, and you can use the -r option
The same goes for other basic commands found in the findutils package such as gfind
or glocate
or gupdatedb
, which have different BSD counterparts on OS X.
After installing findutils, the command on MacOS will be:
git branch -r --merged origin/master \
| awk -F/ '/^\s*origin/ {if (!match($0, /origin\/master/)) {sub("^\\s*origin/", ""); print}}' \
| gxargs -rpn1 git push origin --delete
Should be useful for future projects.