git格式:用列截断

时间:2017-05-15 17:03:14

标签: git command-line zsh

我有以下命令在命令行中列出本地分支:

git for-each-ref --sort=committerdate refs/heads/ --format='%(color:yellow)%(refname:short)%(color:reset);(%(color:green)%(committerdate:relative)%(color:reset));%<(70,trunc)(%(contents:subject)%s)' | column -t -s';'

一切都有效,除了%<(70,trunc),它只是打印出来而不是作为命令应用。

the docs

  

&#39;%&lt;(&lt; N&gt; [,trunc | ltrunc | mtrunc])&#39;:使下一个占位符至少取N列,如果需要,在右边填充空格。如果输出长于N列,则可以选择在开头(ltrunc),中间(mtrunc)或结尾(trunc)截断。请注意,截断仅适用于N&gt; = 2。

我不相信它应该重要,但这并不适用于zsh或bash。

以下是它的外观片段: snippet of formatted git branch list output

1 个答案:

答案 0 :(得分:2)

您正在阅读错误的文档。漂亮的格式不是for-each-ref中使用的格式,for-each-ref的文档中没有任何内容表明这一点。即使您阅读了漂亮的格式帮助页面,您也会发现这与您正在使用的占位符完全不匹配。您有%s之类的内容,而不是%(contents:subject)之类的内容。 (顺便说一下,你的模式中仍然会有%s,并且会一直打印出来。

由于您的模式中包含%(contents:subject)%s,我猜您尝试将git log模式转换为git for-each-ref模式,但这些模式完全不同,是填充/截断占位符不起作用的原因。它仅以漂亮的格式提供,而不是for-each-ref格式。