以prettyformat获取git日志输出

时间:2018-07-19 17:15:27

标签: json git graph git-bash git-log

我有以下命令:git log --all --pretty=format:'%n{%n "CommitHash": "%H",%n "Author": "%an",%n "AuthorEmail": "%ae",%n "Date": "%ad",%n "Message": "%f",%n},'

我可以对其进行修改以获取以下内容:"Merge":"....."和以下内容:Merge branch 'master' of ..........

当您使用git log --all --graph命令时,这2件事就会出现,但是我尝试将上面命令的信息以上面介绍的漂亮格式放置,直到现在我都能得到所有这些信息2件事。

1 个答案:

答案 0 :(得分:1)

您无法获得具有格式的"Merge":".....":那样根本无法使用。

可以使用%p(缩写的父哈希ID)或%P(完整的父哈希ID)获得所有父哈希ID。但是请注意,您还将获得非合并提交的父哈希ID。当然,区别在于,如果有两个或多个父哈希ID(它们将用空格分隔),则所涉及的提交是合并提交。

Merge branch 'master' of <url>文本只是提交消息的正文,在合并提交中,由进行合并的人让git pull来指定正文内容。可通过%b(仅正文)或%B(主题加正文)使用。再一次,您将获得所有所有提交的信息,而不仅仅是合并提交。

如果您尝试通过任意提交(包括消息正文)生成有效的JSON,则不应仅使用--pretty=format:...指令来尝试进行此操作,而应使用可以对消息进行任何必要更改的外部程序,正文,这样它就不会破坏JSON流。例如,包含双引号或换行符的提交消息正文将是一个问题。