缺少git log中的换行符--graph --format = ...文件状态是否翻转?

时间:2017-11-22 15:37:26

标签: git git-log

我正在尝试使用文件状态信息获取自定义格式的git日志。但是,我遇到了一个奇怪的新问题。

显然,每当使用--format--pretty参数时,通常在省略文件状态信息后插入换行符。这导致了一些难以阅读的输出,如

>> git log -3 --graph --name-status --format=%h:%s
* eee8e08:Second commit With more details in the body.
|
| M hello.txt
* b6146f7:First commit.
|
| A hello.txt
| A world.txt
* 30cb21f:We start from here. Bla bla bla.

在视觉上文件状态看起来与错误的提交组合在一起。

如果没有--graph选项的要求,可以通过在格式的开头添加换行符(%n)来轻松修复,但是 - 这只会导致更加奇怪看,将提交消息从表示图中注释的*移开。

>> git log -3 --graph --name-status --format=%n%h:%s
*
| 1868195:Second commit With more details in the body.
|
| M hello.txt
*
| 0f03672:First commit.
|
| A hello.txt
| A world.txt
*
| 033f27f:We start from here. Bla bla bla.

缺少的换行会影响所有文件状态切换(例如--name-status--stat--numstat)。

作为参考,没有格式化命令,详细消息有更好的换行定位,

>> git log -3 --graph --name-status
* commit eee8e08d3c892e96228844bcdc6324dc895041af
| Author: me <me@me.org>
| Date:   Wed Nov 22 16:26:58 2017 +0100
|
|     Second commit
|     With more details in the body.
|
| M hello.txt
|
* commit b6146f70b3406508f5b1300c8cda6fd954d3eadd
| Author: me <me@me.org>
| Date:   Wed Nov 22 16:26:58 2017 +0100
|
|     First commit.
|
| A hello.txt
| A world.txt
|
* commit 30cb21f8aba82b30a2f780165533b477cb4555f9
| Author: me <me@me.org>
| Date:   Wed Nov 22 16:26:58 2017 +0100
|
|     We start from here.
|     Bla bla bla.

使消息,标题和文件状态的分组更加清晰。

是否有一些方法可以将文件状态信息转换为自定义日志格式,而不会错过将其与上一次提交分开的新行?

作为参考,输出是在带有脚本https://pastebin.com/exLswmeR

的测试存储库中创建的

1 个答案:

答案 0 :(得分:2)

这应该可以胜任:git log -3 --graph --name-status --pretty='format:%h:%s%n'

默认情况下,格式化git使用tformat我猜。见https://git-scm.com/docs/git-log。通过将其设置为format,新行将正常添加。

我认为它因为这个而改变了格式(来自git doc):

In addition, any unrecognized string that has a % in it is interpreted
as if it has tformat: in front of it. For example, these two are
equivalent:
$ git log -2 --pretty=tformat:%h 4da45bef
$ git log -2 --pretty=%h 4da45bef