我试图自定义格式的git日志。我希望所有提交都显示在一行中。每一行应该只显示提交消息的第一行。 我发现git日志——pretty=short应该做的把戏,但在我的电脑上,它显示完整的日志,因为git日志(除了时间戳)。

此外,我尝试使用手册页中定义的占位符。但是,我找不到缩短日志消息的命令。我尝试了这行git log——pretty=format:'%h: %s',它在一行中显示了短散列%hand完整的消息%s。

我使用的是git版本1.7.3.1.msysgit。Vista上0。


也许这与我编写提交消息的方式有关。这里有一个例子:

Added some functionality.
+ Added print function in Foo class.
+ Added conversion from foo to baz.

所以,有了这个例子,我只想输出一些功能。以较短的散列作为前置。


当前回答

如果你不需要散列,只需要第一行(主题行):

git log --pretty=format:%s

其他回答

你试过这个吗?

git log --oneline 

它是git log——pretty=oneline——abbrev-commit的别名,并显示“short sha”和“short description”,例如:

9bee8857 Write more code
831fdd6e Write some code Second line of message

问题是在提交消息的第一行之后缺少了一个空行。上面的命令通常适用于我,但我刚刚测试了一个提交,第二行没有空。我得到了和你一样的结果:全部信息在一行中。

空第二行是git提交消息的标准。你所看到的行为可能是有意实现的。

提交消息的第一行是一个简短的描述。如果你不能在一行中完成它,你可以使用几行,但是git认为第一个空行之前的所有内容都是“简短描述”。一行打印整个简短的描述,也就是所有的3行。

你可以定义一个全局别名,这样你就可以以一种更舒服的方式调用一个短日志:

Git配置——全局别名。log——pretty=oneline——abbrev-commit"

然后你可以使用git log调用它(如果你启用了它,它甚至可以自动完成)。

没有提交消息,只有哈希:

git log --pretty=oneline | awk '{print $1}'

git log——oneline能做到你想要的吗?

如果你不需要散列,只需要第一行(主题行):

git log --pretty=format:%s