如何仅用第一行输出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