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

4

我想删除所有已经合并的分支。我一直使用如下命令:

git branch --merged | egrep -v "(^\*|master|dev)" | xargs git branch -d但是不知道为什么现在无法正常工作,即使之前也是能够使用这个命令的。它会返回错误信息:"Fatal: branch name required"。


尝试省略 | xargs git branch -d。如果这样仍无法理解,请尝试同时省略 egrep 以获得更多的启示。 - torek
1个回答

14

如果没有在标准输入(stdin)中提供任何输入,例如,如果前面的管道没有产生任何输出,则xargs将以无参数的方式运行您的命令。也就是说,如果是这样:

git branch --merged | egrep -v "(^\*|master|dev)"

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

git branch -d

如果您在命令行上尝试,会产生以下结果:

fatal: branch name required
最简单的解决方案是在xargs命令中添加--no-run-if-empty标志:
git branch --merged |
 egrep -v "(^\*|master|dev)" |
 xargs --no-run-if-empty git branch -d

感谢您添加了没有其他分支可删除的情况! - Ozymandias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接