代码之家  ›  专栏  ›  技术社区  ›  Paebbels

如何解决git日志中的对齐问题——图

  •  2
  • Paebbels  · 技术社区  · 7 年前

    如果没有可用的GUI,我将使用以下别名在控制台上呈现git提交历史:

    $ git config alias.treex
    log --color --graph --pretty=format:'%C(cyan)%h%Creset - %C(cyan)%ad%Creset %<(80,trunc)%s   %C(cyan)%>(20,trunc)%an - %Cgreen%>(12)%cr%Creset' --date=format:'%d.%m.%Y %H:%M' --abbrev-commit --all
    

    %<(80,trunc)%s ,由 git log --graph 破坏对齐:

    Git treex result.
    (点击放大)

    2 回复  |  直到 7 年前
        1
  •  3
  •   axiac    7 年前

    而不是 %<(80,trunc)%s git log %<|(110,trunc)%s 告诉它呈现主题直到它到达 110 输出的列。这样,主题后面的下一个字段从 111 列并恢复顺序。
    ( 大约是原作 80 主题所需的字符+其前面列的大小( %h = 7 人物, %ad = 16 字符)以及您在它们之间放置的分隔符字符。)

    当然可以使用不同的值。也可以尝试约束第一个字段的宽度( %小时 %s 字段很大,并且使用足够的列来容纳两个并发分支。

    documentation of git log 就在下面 <() 格式,并且它出现在文档页的所有版本中(不幸的是以 2.3.8 ). 如果您使用的是较旧的Git版本,则该格式可能不适用于您。在这种情况下,最好的建议是将Git更新到更新的版本。

        2
  •  3
  •   Community Mohan Dere    5 年前

    移动 %h 对齐占位符

    作为 axiac 可以约束第一个字段的宽度。例如,如果您添加 %>|(16) 可以将缩写的提交哈希移到格式定义的开头( %小时 还有一个额外的空白字符,你将给这个图一个8位数的范围。

    原始git日志历史记录格式: Unaligned git log history

    通过添加 %>|(16) 对于 %小时 : Aligned git log history

    作为 轴心 trick for powerful Git aliases

    用参数调用你的别名 30 然后将Git日志历史记录条目移动22列: Aligned git log history with argument

    现在,您可能不打算每次调用别名时都传递列数。这个 link 说明如何设置默认参数。这样,您的别名引用了一次在没有参数的情况下调用的默认值。一旦我们做到了这一点,我们就可以直接纠正别名中8位数字的偏差。因此,传递的参数直接对应于实际移位的列。

    最终别名

    您的最后一个Git别名接受一个参数来移动Git日志项 x

    $ git config --global alias.treex
    !f() { x=${1-16}; length=`expr $x + 8`; git log --color --graph --pretty=format:"%>|($length)%C(cyan)%h%Creset - %C(cyan)%ad%Creset %<(80,trunc)%s   %C(cyan)%>(20,trunc)%an - %Cgreen%>(12)%cr%Creset" --date=format:%d.%m.%Y; }; f