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

时间:2014-03-14 20:41:14

标签: git formatting git-log

对于某些git命令,我一直在修改log别名。我有大部分我想要的东西(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标记的位置。我想要的是标签与时间戳一致,如下所示:

* 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)'

3 个答案:

答案 0 :(得分:4)

%W如下所示似乎可以解决问题。

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

Git版本1.8.5.2

答案 1 :(得分:1)

呃......使用%n%-... 几乎似乎有效,但我仍然无法在这里做正确的事。

啊哈! '%h - [%ar] %s%n%-w(80,9)%+d'有效!

这看起来非常笨拙(添加换行符,可能会删除它,在9处用缩进包裹行,如果%d不为空则添加换行符),但更明显的版本(使用%+w或{{ 1}}没有%w...%+d%n部分)不能正常工作。

答案 2 :(得分:0)

您也可以使用awk - 但上面的列方法更清晰。这可能会把它一直带到你想要的东西。

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

在好的方面,这似乎为我保留了颜色。