我如何用(至少)这些信息显示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=" %C(reset)%ad %C(Cyan)%an: %C(reset)%s"

(个人注意,你应该总是有提交哈希..)

最后的-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

前面提到的所有建议都使用%s占位符作为主题。我建议使用%B,因为%s格式保留新行,多行提交消息显示被压扁。

git log --pretty=format:"%h%x09%an%x09%ai%x09%B"
git log --pretty=format:"%h%x09%an%x09%ad%x09%s"

完成任务。这个输出:

  fbc3503 mads    Thu Dec 4 07:43:27 2008 +0000   show mobile if phone is null...   
  ec36490 jesper  Wed Nov 26 05:41:37 2008 +0000  Cleanup after [942]: Using timezon
  ae62afd tobias  Tue Nov 25 21:42:55 2008 +0000  Fixed #67 by adding time zone supp
  164be7e mads    Tue Nov 25 19:56:43 2008 +0000  fixed tests, and a 'unending appoi
  93f1526 jesper  Tue Nov 25 09:45:56 2008 +0000  adding time.ZONE.now as time zone 
  2f0f8c1 tobias  Tue Nov 25 03:07:02 2008 +0000  Timezone configured in environment
  a33c1dc jesper  Tue Nov 25 01:26:18 2008 +0000  updated to most recent will_pagina
                                                                              

受到stackoverflow问题的启发:“git log output like svn ls -v”,我发现我可以添加我需要的确切参数。

要缩短日期(不显示时间),使用——date=short

如果你好奇有哪些不同的选择: %h =缩写提交哈希 %x09 = TAB(代码9的字符) %an =作者名 %ad =作者日期(格式尊重——date= option) %s = subject 来自kernel.org/pub/software/scm/git/docs/git-log.html (PRETTY格式部分)由Vivek的评论。