我如何用(至少)这些信息显示git日志输出:
* author
* commit date
* change
我想把它压缩到每个日志条目一行。最短的格式是什么?
(try——format=oneline,但不显示日期)
我如何用(至少)这些信息显示git日志输出:
* author
* commit date
* change
我想把它压缩到每个日志条目一行。最短的格式是什么?
(try——format=oneline,但不显示日期)
当前回答
我使用这两个.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。
截图
其他回答
在项目文件夹中运行:
$ git log --pretty=format:"%C(yellow)%h %ar %C(auto)%d %Creset %s , %Cblue%cn" --graph --all
如果你愿意,添加这一行到你的~/.gitconfig:
[alias]
...
list = log --pretty=format:\"%C(yellow)%h %ar %C(auto)%d %Creset %s, %Cblue%cn\" --graph --all
如果你想指定一个文件或文件夹,只需在最后添加路径:
%ad =作者日期(格式尊重——date=option) ——date=raw显示从epoch (1970-01-01 00:00:00 UTC)开始的秒数,后面是一个空格,然后是时区,作为UTC Reference的偏移量
git log -1 --pretty=format:"%ad" --date=raw path/to/your/folder
我使用这两个.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。
截图
git log --pretty=format:'%h %ad %s%x09%ae' --date=short
结果:
e17bae5 2011-09-30 Integrate from development -> main nixon@whitehouse.gov
eaead2c 2011-09-30 More stuff that is not worth mentioning bgates@apple.com
eb6a336 2011-09-22 Merge branch 'freebase' into development jobs@nirvana.org
首先是固定宽度的内容。最不重要的部分——电子邮件域——是最后一个很容易过滤的部分。
Tig可能是git log命令的替代品,在主要的开源*nix发行版中可用。
在debian或ubuntu上尝试按以下方式安装和运行:
$ sudo apt-get install tig
对于mac用户,brew可以拯救他们:
$ brew install tig
(安装tig)
$ tig
(日志在页导航中显示如下,当前提交的散列显示在底部)
2010-03-17 01:07 ndesigner changes to sponsors list
2010-03-17 00:19 rcoder Raise 404 when an invalid year is specified.
2010-03-17 00:06 rcoder Sponsors page now shows sponsors' level.
-------------------------- skip some lines ---------------------------------
[main] 531f35e925f53adeb2146dcfc9c6a6ef24e93619 - commit 1 of 32 (100%)
由于markdown不支持文本着色,想象一下:列1:蓝色;第二栏:绿色;第3列:默认文本颜色。最后一行,高亮显示。按Q或Q退出。
Tig对没有粗糙边缘的列进行了校正,而ASCII制表符(%x09)并不能保证这一点。
对于短日期格式,请键入大写D(注意:小写D打开diff视图)。通过在~/.tigrc中添加show-date = short来永久配置它;或者在.git/configure或~/.gitconfig的[tig]部分中。
看到整个变化:
回车。一个子窗格将在窗口的下半部分打开。 使用k, j键滚动子窗格中的更改。 同时,使用上、下键从一个提交移动到另一个提交。
由于tig与git是分开的,而且显然是*nix专用的,它可能需要cygwin才能安装在windows上。但是对于fedora,我相信安装命令是$ su,(输入root密码),# yum install tig。对于freebsd尝试% su,(输入root密码),# pkg_add -r tig。
顺便说一下,tig的好处不仅仅是快速查看日志: 截图& 手册