git日志格式的可选缩进换行符

wf82jlnq  于 2023-01-24  发布在  Git
关注(0)|答案(4)|浏览(200)

我一直在修改一些log命令的git别名。我已经有了大部分我想要的东西(credit here),但是有一部分我遇到了麻烦。当我调用...

git log --graph --format=format:'%h - [%ar] %s%+d'

......我得到......

* ab123f - [6 hours ago] Fix the references
|  (HEAD, origin/master, master)
* bc123f - [8 hours ago] New build syntax
* cd123f - [10 hours ago] Initial import

...其中%+d添加了一个新行,并将--decorate标记(如果存在)放在该行上。我更希望标记与 time stamp 一致,如下所示:

* ab123f - [6 hours ago] Fix the references
|          (HEAD, origin/master, master)
* bc123f - [8 hours ago] New build syntax
* cd123f - [10 hours ago] Initial import

我该怎么做呢?如果没有--decorate标签,我不希望额外的换行符。我已经尝试了各种format placeholders:%+d%-d%+ d(它们不起作用);%>(<N>)%>>(<N>)的排列;等等,但我不能让它做我想做的事。
为了简单起见,颜色和更多的提交信息被删除了,但是它们似乎会干扰torek's answer。完整的命令如下:

git log --graph --format=format:'%C(bold yellow)%h%C(reset) - %C(green)(%ar)%C(reset) %s %C(white)<%an>%C(reset)%C(auto)%+d%C(reset)'
46qrfjad

46qrfjad1#

如下所示的%w似乎可以达到这个目的。

git log --graph --format=format:'%h - [%ar] %-s%w(0,0,9)%+d'

Git版本1.8.5.2

w41d8nur

w41d8nur2#

啊...使用%n%-... * 几乎 * 似乎工作,但我仍然不能让它做正确的事情在这里。
啊哈!'%h - [%ar] %s%n%-w(80,9)%+d'起作用了!
这看起来非常笨拙(添加一个换行符,或者删除它,换行时缩进9,如果%d不为空则添加一个换行符),但是更明显的版本(使用%+w,或者使用%w...%+d但不使用%n%-部分)不起作用。

c9x0cxw0

c9x0cxw03#

你也可以使用awk--但是上面的列方法更简洁。这可能会让你一直找到你要找的东西。

git log --format=format:'%h - [%ar%] %s %d' | awk -F'(' '{print $1} {if ( $2 != "" ) print "\t  ("$2}'

从好的方面来说,这似乎为我保留了色彩。

n3schb8v

n3schb8v4#

对于好奇的未来访客,我最终决定这样做:

[alias]
    # Pretty logs
    lg1 = log --graph --date=auto:human --format=tformat:'%C(bold yellow)%h%C(reset) %C(green)%ad%C(reset) %s %C(dim white)%aN%C(reset) %w(0,0,9)%C(auto)%+d%C(reset)'
    lg2 = log --graph --format=tformat:'%C(bold yellow)%h%C(reset) %C(cyan)%aD%C(reset) %C(green)(%ar) %C(dim white)%aN%C(reset)%w(0,0,9)%n %C(brightwhite)%s%C(auto)%+d%C(reset)%w(0,0,10)%+b'
    lg = lg1

    # Monochrome log
    lgs = log --graph --format=format:'%h - [%ar] %s%n%-w(80,9)%+d'
  • git lggit lg1(对于git log --oneline类似物)
  • git lg2包括正文和完整日期(但也包括模糊日期)
  • git lgs作为颜色中断时的更简单的备用方法

颜色做了足够的工作来区分我不再 Package 大多数名字和时间的部分。而且,--date=auto:human没有出现在最初的问题中,但我非常喜欢它。

相关问题