如何仅用第一行输出git日志?

我正在尝试自定义git log的格式。 我希望所有提交显示在一行中。 每行只应该显示提交消息的第一行。
我发现 git log --pretty=short应该可以做到这一点,但是在我的电脑上,它显示了完整的日志作为git log (除时间戳之外)。

此外,我试图使用手册页中定义的占位符 。 虽然,我找不到缩短日志消息的命令。 我试过这一行git log --pretty=format:'%h : %s'它在一行中显示短的哈希%h和完整的消息%s

我在Vista上使用git version 1.7.3.1.msysgit.0


也许这跟我写我的提交信息的方式有关。 这里是一个例子:

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

所以,给出的例子我只想输出Added some functionality. 由短头散列前缀。

你尝试过吗?

 git log --pretty=oneline --abbrev-commit 

问题可能是您在第一行之后缺less空行。 上面的命令通常适用于我,但我只是在没有空的第二行的提交上进行testing。 我得到了和你一样的结果:整条信息在一行上。

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

提交消息的第一行是一个简短的描述。 如果你不能把它放在一行中,你可以使用几个,但是在第一个空行之前,git会把所有内容都看作是“简短描述”。 oneline打印整个简短的描述,所以你所有的3行。

git log --oneline做你想要的吗?

您可以定义一个全局别名,以便以更舒适的方式调用短日志:

git config --global alias.slog "log --pretty=oneline --abbrev-commit"

然后你可以使用git slog来调用它(甚至可以在自动完成的情况下工作)。

通过制作别名来 更好更轻松地完成 git日志。 将下面的代码粘贴到terminal一次。

 git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit" 

产量

 git lg 

输出改变了行

 git lg -p 

进一步阅读。
https://coderwall.com/p/euwpig/a-better-git-log
高级阅读。
http://durdn.com/blog/2012/11/22/must-have-git-aliases-advanced-examples/

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

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

如果你想总是使用这种方式的git log ,你可以添加git别名

git config --global alias.log log --oneline

在那之后, git log会打印出通常由git log --oneline打印的git log --oneline