我如何用(至少)这些信息显示git日志输出:
* author
* commit date
* change
我想把它压缩到每个日志条目一行。最短的格式是什么?
(try——format=oneline,但不显示日期)
我如何用(至少)这些信息显示git日志输出:
* author
* commit date
* change
我想把它压缩到每个日志条目一行。最短的格式是什么?
(try——format=oneline,但不显示日期)
当前回答
git log --pretty=format:'%h %ad %s (%an)' --date=short
or
git log --pretty=format:'%h %ad %s | %an' --date=short
...riffing on cdunn2001's answer above: I'd lose the author's e=mail and include just the author's name, as per Jesper and knittl, but in keeping with cdunn2001's idea of maintaining output in columns of constant width for ease of reading (great idea!). In lieu of a separate left justified column for author name, however, I wrap that flag at the end of the command with a parentheses or offset it with a pipe. (Could really be any character that serves as a visual aid in reading the output...albeit might make sense to avoid back or forward slashes in order to reduce confusing the output with a directory or something.)
样例输出:
6fdd155 2015-08-10 Fixes casting error in doSave | John Doe
c4f4032 2015-08-10 Fix for IE save. Add help button. | Jane
29a24a6 2015-08-10 Fixes bug in Course | Mac
其他回答
前面提到的所有建议都使用%s占位符作为主题。我建议使用%B,因为%s格式保留新行,多行提交消息显示被压扁。
git log --pretty=format:"%h%x09%an%x09%ai%x09%B"
git log --pretty=format:'%h %ad %s (%an)' --date=short
or
git log --pretty=format:'%h %ad %s | %an' --date=short
...riffing on cdunn2001's answer above: I'd lose the author's e=mail and include just the author's name, as per Jesper and knittl, but in keeping with cdunn2001's idea of maintaining output in columns of constant width for ease of reading (great idea!). In lieu of a separate left justified column for author name, however, I wrap that flag at the end of the command with a parentheses or offset it with a pipe. (Could really be any character that serves as a visual aid in reading the output...albeit might make sense to avoid back or forward slashes in order to reduce confusing the output with a directory or something.)
样例输出:
6fdd155 2015-08-10 Fixes casting error in doSave | John Doe
c4f4032 2015-08-10 Fix for IE save. Add help button. | Jane
29a24a6 2015-08-10 Fixes bug in Course | Mac
我使用这两个.gitconfig设置:
[log]
date = relative
[format]
pretty = format:%h %Cblue%ad%Creset %ae %Cgreen%s%Creset
%ad是作者日期,可以通过——date或.gitconfig中[log]节中指定的选项覆盖。 我喜欢相对日期,因为它给人一种事情发生的即时感觉。 输出如下所示:
6c3e1a2 2 hours ago you@me.com lsof is a dependency now.
0754f18 11 hours ago you@me.com Properly unmount, so detaching works.
336a3ac 13 hours ago you@me.com Show ami registration command if auto register fails
be2ad45 17 hours ago you@me.com Fixes #6. Sao Paolo region is included as well.
5aed68e 17 hours ago you@me.com Shorten while loops
当然,这都是彩色的,所以很容易区分对数线的各个部分。 此外,它是输入git log时的默认值,因为[format]部分。
2014年更新: 由于git现在支持填充,我对上面的版本做了一个很好的修改:
pretty = format:%C(yellow)%h %Cblue%>(12)%ad %Cgreen%<(7)%aN%Cred%d %Creset%s
右对齐相对日期,左对齐提交者名称,这意味着您将得到一个类似于列的外观,看起来很舒服。
截图
2016年更新:由于GPG提交签名正在成为一件事情,我想我应该更新这篇文章,包括签名验证(在截图中,它是在提交后的洋红色字母)。对该标志的简短解释:
% G ?:显示“G”表示良好(有效)签名,“B”表示糟糕签名,“U”表示有效但未知的良好签名,“N”表示没有签名
其他变化包括:
如果输出不是tty(这对grepping等很有用),颜色现在会被删除。 Git log -g现在包含了reflog选择器。 在refname上保存2个parens,并将它们放在末尾(以保持列对齐) 如果相关日期太长,请截断它们(例如3年,4..) 截断提交者名称(对于某些ppl来说可能有点短,只需更改%<(7,trunc)或检查git .mailmap特性来缩短提交者名称)
下面是配置:
pretty = format:%C(auto,yellow)%h%C(auto,magenta)% G? %C(auto,blue)%>(12,trunc)%ad %C(auto,green)%<(7,trunc)%aN%C(auto,reset)%s%C(auto,red)% gD% D
总而言之,现在以牺牲一些(希望)无用的字符为代价,更好地保留了列对齐。 如果你有任何改进,请随意编辑,我想让消息的颜色取决于是否提交签名,但这似乎是不可能的atm。
截图
最后的-10表示最近10次提交。
使用预定义的git别名(hs - history的缩写):
git hs
由命令创建一次:
git config --global alias.hs "log --pretty='%C(yellow)%h %C(cyan)%cd %Cblue%aN%C(auto)%d %Creset%s' --graph --date=relative --date-order"
%h =缩写提交哈希 %cd =提交日期(格式尊重——date= option) %aN =作者名(respect .mailmap) %d = ref name %s = subject
附注:从Git v2.13.0开始,——decoration默认启用。
引用:
Git - Git -log文档 Git中作者和提交者的区别? GitHub如何使用Git的作者日期和提交日期
git log --pretty=format:"%H %an %ad"
使用——date=设置日期格式
git log --pretty=format:"%H %an %ad" --date=short