我有一个git日志别名,它把每一个提交都打印成一行。因为有些人在提交日志中写了太长的一行代码,所以很多提交都换了一行。我该如何格式化git日志输出,以便在50个字符之后删除注解?
我在git-log手册页上找到了这个,但是它只会填充短注解,而不会删除长注解。
%<(<N>[,trunc|ltrunc|mtrunc]): make the next placeholder take at least N columns,
padding spaces on the right if necessary. Optionally truncate at the beginning (ltrunc),
the middle (mtrunc) or the end (trunc) if the output is longer than N columns. Note that
truncating only works correctly with N >= 2.
7条答案
按热度按时间xn1cxnb41#
文档中并不清楚需要哪些字符,但以下示例将主题行剪切为50个字符:
格式规范为
%<
,其参数需要放在圆括号中。在本例中,50个字符并截断多余的字符。例如,在msysGit存储库上执行此操作将生成:
kgqe7b3p2#
迟到了,但这些选项也会做到这一点:
或(例如)
zbdgwd5y3#
仅截断并填充提交消息
根据其他答案,格式占位符
%<(50,trunc)%s
将打印提交消息,但这也会将较短的值填充为相同的值,而且没有办法告诉它不要这样做。如果这适合你,那么你就完成了。如果不适合,就需要另一种方法。
在终端宽度处截断整行
另外,根据其他答案,您可以将
less -S
配置为全局或每个存储库的core.pager
选项,这将在终端宽度上修剪整个日志字符串,避免换行。但它会对所有Git命令执行此操作!(至少是所有生成分页输出的命令)。
改进-仅截断特定命令
您可以使用
-c
选项(例如git -c core.pager='less -S' log --graph --oneline
)执行此操作更好的是,将其设置为别名,这样就不必每次都键入它:
∮结合两者∮
你也可以把它和格式化占位符结合起来,这里有一个使用
--graph
标志的例子,其中提交信息也被填充/截断到50个字符,但是由于--graph
选项创建了一个可变宽度的提交图,你需要把这两种方法结合起来,而且你不想每次都打出来:qacovj5a4#
我把这个放入
~/bin/git-mylog
:这里有一点要做,但它的核心是使用
tput cols
来获得终端宽度,然后执行一些运算,将注解宽度截断为实际可用的空间,而不是固定的宽度。omtl5h9j5#
(我似乎完全无法适当地格式化评论,所以把它作为一个答案贴出来,但实际上是对@patthoyts回应的评论。)
trunc
的可爱之处在于它有衬垫,因此您可以这样使用它:git log --pretty=format:"%ad %<(50,trunc)%s %h" --date=short --reverse
以产生更容易(至少对我的眼睛)的概览。
$ git log --pretty=format:"%ad %<(50,trunc)%s %h" --date=short --reverse 2015-06-15 initial commit 5099ede 2015-06-16 Layout - Responsive grid added. 6534242 2015-06-17 HTML - H1 / Title updated <title>Testpage</title.. 88ea464 2015-06-18 Updating the Hotfix changes a8fbc47
提示-添加一个alias,比如trunc,让自己轻松一些。
git config --global alias.trunc 'log --pretty=format:"%ad %<(50,trunc)%s %h" --date=short --reverse'
jhdbpxl96#
将显示剥离的提交标头(有代码)
将显示完整的提交头(有代码)
tvz2xvvm7#
省略号的使用在Git 2.40(Q1 2023)中得到了澄清:
参见commit 540e7bc、commit b5cd634、commit 63792c5、commit 8bcb8f8、commit d664a7a(2023年1月19日)和Philip Oakley (
PhilipOakley
)。(由Junio C Hamano --
gitster
--合并至commit 4ac326f,2023年1月30日)doc
:pretty-format
描述了在截断中使用省略号签署人:菲利普·奥克利
提交a7f01c6(
pretty
:支持%>
中的截断,2013年4月19日,Git v1.8.3-rc0--merge)(pretty
:支持在%>
、%<
和%><
中截断,2013 - 04 - 19)在截断占位符值时添加了省略号的使用。显示我们的"两点"省略号,以及左、中、右截断的示例,以避免对字符串的哪一端进行调整产生任何混淆。
(cf对齐和子串)。
pretty-formats
现在在其手册页中包括:如果输出长于N列,则在左侧
(ltrunc)
..ft
、中间(mtrunc)
mi..le
或末尾(trunc)
rig..
处截断(使用省略号"..
")。这就是
%C(blue)%<(10,trunc)%aN %<(50,trunc)%C(white)%s
的功能。