Git - 列出远程分支及其作者姓名

14
根据我的搜索,下面的两个命令应该给我返回作者名字和远程分支。然而,我没有得到任何结果——你知道是为什么吗?
我正在使用 Windows 命令提示符。
下面的命令会返回:"Input file specified two times."
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)' | sort -k5n -k2M -k3n -k4n
下面的命令不返回任何内容:
git for-each-ref --format='%(committerdate) %09 %(authorname) %09 %(refname)'

我应该怎么做,才能列出所有活跃分支及其作者的名称?


git branch -av是什么意思? - Christoph
@Christoph,感谢您的回复。我得到了许多带有最新评论的分支,但我没有得到作者姓名。我想要分支名称、作者姓名和如果可能的话创建日期。我需要调整您分享的命令吗? - Pratap Das
2个回答

35

您正在尝试在Windows的cmd shell中运行Unix命令。 Windows的sort无法理解-k5n语法。尝试在Git For Windows提供的bash shell中运行,它将不会打印错误。

但还有改进的空间:git for-each-ref可以自己排序:

git for-each-ref --sort=committerdate --format='%(committerdate) %09 %(authorname) %09 %(refname)'

接下来:你提到你只想要远程分支。实际上,你也会获得本地分支、标签、注释,以及可能还有一些其他的东西。你可以将它限制为远程分支:

Next: 您提到您只需要远程分支。 实际上,您还会获得本地分支、标记、注释和其他一些内容。 您可以将其限制为仅远程分支:

git for-each-ref --sort=committerdate --format='%(committerdate) %09 %(authorname) %09 %(refname)' refs/remotes

由于不再有sort命令,您可以在调整format参数的引号后,在cmd中再次运行它(cmdbash使用不同的引号语义):

git for-each-ref --sort=committerdate --format="%(committerdate) %09 %(authorname) %09 %(refname)" refs/remotes

我使用这个命令来列出 Azure DevOps 中的所有远程分支,但它也会列出正在被删除的分支(实际上只是被删除)。有什么办法可以过滤掉它们吗? - GLP
为了在最后一个命令上获得漂亮的表格输出,当作者有时只使用一个名称时,您可以使用以下命令:git for-each-ref --sort=committerdate --format="\"%(committerdate)\" %09 \"%(authorname)\" %09 \"%(refname)\"" refs/remotes | column -s"\"" -t - ikaerom

1

你应该尝试使用双引号而不是单引号:

git for-each-ref --format="%(committerdate) %09 %(authorname) %09 %(refname)" | sort -k5n -k2M -k3n -k4n

如果不起作用,尝试去掉导致错误的sort即可:
git for-each-ref --format="%(committerdate) %09 %(authorname) %09 %(refname)"

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