列出所有以指定字符串开头的本地git分支

5

我想列出所有本地分支(最终要删除,但为了安全起见...),这些分支仅以abc开头。问题是这种方法“有点”有效。但是如果没有分支以“abc”开头,则它会列出所有分支。这就是我不想做的事情(删除所有本地分支)。

git for-each-ref --format="%(refname:short)" refs/heads/abc\* | xargs git branch --list

你为什么要在这里使用“xargs”? “for-each-ref”的输出不已经是你想要的了吗? - Etan Reisner
老实说,我不确定xargs是做什么的。去掉它会有帮助吗? - user3521314
我的意思是完全删除 | xargs git branch --list 部分。 xargs 将标准输入转换为它运行的命令的命令行参数。 在这种情况下,我的观点是,for-each-ref 的输出已经是分支列表。 为什么要将其全部交给 git branch 呢? (是的,仅删除单词 xargs 不会产生任何有用的作用。 它将始终给您完整的列表,因为 git branch 没有读取标准输入。) - Etan Reisner
明白了,但现在我想删除它们而不仅仅是列出它们。 - user3521314
抱歉,那是针对 xargs 的一个参数,参数要么是 -r 或者是 --no-run-if-empty - Etan Reisner
显示剩余4条评论
2个回答

7

列出所有以“abc”开头的分支:

git branch --list "abc*"

如果您想要删除它们,那么请运行以下命令:

git branch --list "abc*" | xargs --no-run-if-empty git branch --delete

如果你想要冒险尝试,可以在上述命令后面添加--force标记。


3

如果xargs没有输入,你只需要告诉它不要执行命令。

你可以使用-r--no-run-if-empty参数来实现。

git for-each-ref --format="%(refname:short)" refs/heads/abc\* | xargs --no-run-if-empty git branch --list

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