【发布时间】:2013-06-17 19:12:27
【问题描述】:
如何使用 git log 指定最大字段长度?我希望输出列对齐。
【问题讨论】:
-
如果指定的宽度小于字段中的字符数,则不截断该字段。列未对齐。
标签: git
如何使用 git log 指定最大字段长度?我希望输出列对齐。
【问题讨论】:
标签: git
您可以在完全不使用任何外部工具的情况下指定列宽:
git log --format="%<(25,trunc)%ad | %<(25,trunc)%s | %<(25,trunc)%an"
还有很多其他选项,例如
%<|(25)
将输出与列对齐。您可以将列格式化为左边界、右边界甚至居中等:https://git-scm.com/docs/pretty-formats
不幸的是我不知道这是什么时候添加到 git 中的,我在 Windows 上使用的是 2.10.1……
【讨论】:
如果您使用的是 Windows,则可以使用 PowerShell 脚本。在输出之间使用特殊字符格式化日志,从中创建一个对象并通过管道传输到Format-Table,您可以在其中指定Width:
git log --format="%ad|%s|%an" | ForEach-Object {
New-Object PSObject -Property @{
Time = $_.Split('|')[0]
Message = $_.Split('|')[1]
Author = $_.Split('|')[2]
}
} | Format-Table -Property @{Expression={$_.Time};width=25;Label="Author date"},
@{Expression={$_.Message};Width=25;Label="Commit message"},
@{Expression={$_.Author};Width=11;Label="Author name"}
样本输出:
Author date Commit message Author name
----------- -------------- -----------
Sun Jun 16 12:49:03 20... added rand content 60 ... Bonke
Sun Jun 16 12:46:56 20... added rand content 61 ... Bonke
Sun Jun 16 12:46:37 20... change Bonke
Wed Apr 24 22:41:44 20... added rand content 17 ... Klas Mel...
Wed Apr 24 22:40:16 20... added rand content 8 t... Klas Mel...
如果您想在 bash 中执行此操作,请使用 bash 中的类似脚本(灵感来自Git log tabular formatting 的答案):
git log --pretty=format:'%ad|%s|%an' |
while IFS='|' read time message author
do
printf '%.25s %.25s %.11s\n' "$time" "$message" "$author"
done
样本输出
Sun Jun 16 12:49:03 2013 added rand content 60 to Bonke
Sun Jun 16 12:46:56 2013 added rand content 61 to Bonke
Sun Jun 16 12:46:37 2013 change Bonke
Wed Apr 24 22:41:44 2013 added rand content 17 to Klas Mellbo
Wed Apr 24 22:40:16 2013 added rand content 8 to . Klas Mellbo
【讨论】:
%-25.25 而不是%.25