如何使用 git log 指定最大字段长度?我希望输出列对齐。
问问题
1396 次
2 回答
8
您可以在完全不使用任何外部工具的情况下指定列宽:
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...</p>
于 2016-10-25T12:18:56.473 回答
0
如果您在 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
于 2013-06-17T19:53:29.667 回答