我正在尝试开发一个格式字符串来传递给git log --pretty
这样每个日志条目都以完整的提交消息结束,但每个日志条目之间由正好一个空行。问题在于,有些完整提交消息以换行符结尾,有些则不然。
例如,假设我有两次提交,abc1234
and def5678
, 但只有abc1234
完整提交消息末尾包含换行符。在命令行上输出原始提交内容将如下所示:
[prompt]$ git cat-file commit abc1234
(...)
Title FOO
Full commit message FOO
[prompt]$ git cat-file commit def5678
(...)
Title BAR
Full commit message BAR[prompt]$
请注意新的 shell 提示符如何出现在最后一行输出的末尾,表明提交def5678
does not在完整提交消息的末尾包含换行符。
这么说吧def5678
是的父级abc1234
我想输出一个简单的日志,其中每个条目仅包含短提交哈希、标题行和完整提交消息。我可能会尝试这样的事情:
[prompt]$ git log --graph --pretty='commit %h%n%B' abc1234
* commit abc1234
| Title FOO
|
| Full commit message FOO
|
* commit def5678
| Title BAR
|
| Full commit message BAR
* commit <parent of def5678>
(...)
请注意日志条目之间的间距。条目为abc1234
and def5678
由空行分隔(除了图形字符),但条目def5678
而它的父级则不是。
如何构造格式字符串以使间距保持一致,即使完整提交消息的终止不一致?内置的漂亮格式medium
, full
, fuller
, and email
已经这样做了,但我希望能够构造任意格式字符串来执行相同的操作。
我已经尝试过%+B
, %-B
and % B
序列(及其%b
and %n
等价物),但我似乎无法获得一致的间距。
如果有什么不同的话,我正在使用 Git 2.17.0。