git 没有缩进空格的分支输出? (除了正则表达式操作)

git branch output without indent whitespace? (besides regex manipulation)

是否有 git branch 选项可以打印所有分支名称前不带两个空格的分支?我认为 --porcelain 会得到支持,但显然不支持分支列表。

我正在尝试做的事情:我想编写删除合并分支的脚本,而不使用像 awk 那样的低级正则表达式操作,或者在我的例子中是 perl(这样我的脚本就优雅且可读):

git branch | perl -pe 's{^\s*}{}g' | xargs -n 1 git branch -d

(题外话,但对于那些倾向于囤积和讨厌删除的人来说,这是一个很好的快速方法来清除你真正不需要的东西并保持干净的回购)

您可以使用 git for-each-ref 为存储库中每个匹配的引用获取一些字符串:

git for-each-ref refs/heads --format "%(refname:short)"

git for-each-ref refs/heads --format "%(refname:strip=2)"

也可以直接使用git branch。它可能在内部使用 for-each-ref

要列出分支,请使用 git branch --format "%(refname:short)"。这不会输出 *。示例输出:

develop
master
bug-123-fix-issue
task-345-do-stuff

要输出星号,请使用 git branch --format "%(HEAD)%(refname:short)"。不幸的是,这会在所有其他分支的开头创建一个 space 。示例输出:

*develop
 master
 bug-123-fix-issue
 task-345-do-stuff

但是,您可以随心所欲地使用该命令,因此您可以反转它以在末尾添加星号。它仍然包含 space,但在最后。

git branch --format "%(refname:short)%(HEAD)"

示例输出:

develop*
master
bug-123-fix-issue
task-345-do-stuff