我有以下命令在命令行中列出本地分支:
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。
答案 0 :(得分:2)
您正在阅读错误的文档。漂亮的格式不是for-each-ref
中使用的格式,for-each-ref
的文档中没有任何内容表明这一点。即使您阅读了漂亮的格式帮助页面,您也会发现这与您正在使用的占位符完全不匹配。您有%s
之类的内容,而不是%(contents:subject)
之类的内容。 (顺便说一下,你的模式中仍然会有%s
,并且会一直打印出来。
由于您的模式中包含%(contents:subject)
和%s
,我猜您尝试将git log
模式转换为git for-each-ref
模式,但这些模式完全不同,是填充/截断占位符不起作用的原因。它仅以漂亮的格式提供,而不是for-each-ref格式。