删除已合并的所有git分支 - 致命:需要分支名称?

Eri*_*ert 1 git branch pruning git-branch

我正在尝试删除所有合并的分支.我一直都在用

git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d但由于某种原因,它不再适用,即使我之前使用过这个命令.它返回错误"致命:需要分支名称"

lar*_*sks 6

如果没有提供输入stdin- 例如,如果前面的管道没有产生输出 - xargs将运行没有参数的命令.也就是说,如果这样:

git branch --merged | egrep -v "(^\*|master|dev)"
Run Code Online (Sandbox Code Playgroud)

不产生输出,然后xargs将运行:

git branch -d
Run Code Online (Sandbox Code Playgroud)

如果您在命令行上尝试自己,那么会产生:

fatal: branch name required
Run Code Online (Sandbox Code Playgroud)

最简单的解决方案是将--no-run-if-empty标志添加到xargs:

git branch --merged |
 egrep -v "(^\*|master|dev)" |
 xargs --no-run-if-empty git branch -d
Run Code Online (Sandbox Code Playgroud)