【问题标题】:How can I set maximum field lenghs for git log prettyprint?如何为 git log pretty print 设置最大字段长度?
【发布时间】:2013-06-17 19:12:27
【问题描述】:

如何使用 git log 指定最大字段长度?我希望输出列对齐。

【问题讨论】:

  • 如果指定的宽度小于字段中的字符数,则不截断该字段。列未对齐。

标签: git


【解决方案1】:

您可以在完全不使用任何外部工具的情况下指定列宽:

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……

【讨论】:

    【解决方案2】:

    如果您使用的是 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
    

    【讨论】:

    • 当我使用 bash 版本时,如果主题少于 25 个字符,则输出不会对齐。
    • @user2494490 尝试使用%-25.25 而不是%.25
    • 谢谢!这很好用,但我失去了分页——现在整个日志都打印出来了。我将输出输出到 less,但这会将第一行滚动到视野之外。如何恢复可以按空格键翻页的原始功能?
    猜你喜欢
    • 1970-01-01
    • 2012-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多