git log pretty format 可以保留主题中的新行吗?

Posted

技术标签:

【中文标题】git log pretty format 可以保留主题中的新行吗?【英文标题】:Can git log pretty format preserve new lines in subject? 【发布时间】:2016-06-06 18:34:41 【问题描述】:

我在 python 脚本中使用这个命令来生成一个 xml 文件,稍后由我们的 CI 系统处理:

git log -1 --date=iso --pretty=format:"<logentry revision=\"%h\" scm=\"git\">%n<author>%an</author>%n<date>%ad</date>%n<msg>%s</msg>%n"

它产生以下格式的输出

<logentry revision="1e370f5" scm="git">
<author>Johan Govers</author>
<date>2016-02-24 13:11:15 +0100</date>
<msg>PP-204 Try out git PP-207 New build script * Add missing kind="file" to path nodes in changes xml file.</msg>

使用git log -1 会显示带有换行符的消息,但使用漂亮的格式会省略它们。有没有办法产生如下输出?

<logentry revision="1e370f5" scm="git">
<author>Johan Govers</author>
<date>2016-02-24 13:11:15 +0100</date>
<msg>PP-204 Try out git 
PP-207 New build script 
* Add missing kind="file" to path nodes in changes xml file.</msg>

【问题讨论】:

【参考方案1】:

documentation for git log 告诉我们%s 用于主题,它是从commit message's title(强调我的)构建的:

虽然不是必需的,但最好在提交消息的开头使用一个简短(少于 50 个字符)行来总结更改,然后是一个空行,然后是更详尽的描述。 提交消息中第一个空白行之前的文本被视为提交标题,并且该标题在整个 Git 中使用。例如,git-format-patch[1] 将提交转换为电子邮件,它使用主题行中的标题和正文中的其余提交。

如果您想使用整个提交消息,请尝试使用%B

%B:原始正文(展开的主题和正文)

【讨论】:

以上是关于git log pretty format 可以保留主题中的新行吗?的主要内容,如果未能解决你的问题,请参考以下文章

Git 常用指令

git log 附加命令归纳

终端 git log 修改样式

git log的用法

git log 仅显示一个提交 ID

sh Git Log Pretty