如何配置“ git log”以显示“提交日期”


127

如何配置git log显示commit date而不是author date


25
@Colleen每个提交都有两个关联的日期-AuthorDate和CommitDate(git show --pretty=fuller HEAD举个例子)。对于本地开发,这些通常是相同的,但是对于通过电子邮件或其他机制添加的补丁,它们可能会有所不同,其中AuthorDate是补丁生成的日期,而CommitDate是实际将其应用于存储库的时间。
twalberg 2013年

Answers:


145

有几个选项可以漂亮地打印日期。可能最简单的方法是仅使用一种预烘焙--pretty格式,例如git log --pretty=fuller-这将显示两个日期。如果您只想看到一个日期,但要确定为提交日期,则可以使用git log --format=<some stuff>。定义格式的所有允许代码都记录在中git help log。提交日期是之一%cd%cD%cr%ct或者%ci,这取决于什么格式你喜欢进去。

如果您经常要这样做,请将其放在别名中或编写辅助脚本以节省输入时间。


53

您可以使用--pretty=format%cr相对于提交日期。

例如:

$ git log --graph --pretty=format:'%C(auto)%h%d (%cr) %cn <%ce> %s'

您可以在git中定义一个别名,以使其更易于使用。我的内容如下.gitconfig

[alias]
# see `git help log` for detailed help.
#   %h: abbreviated commit hash
#   %d: ref names, like the --decorate option of git-log(1)
#   %cn: commiter name
#   %ce: committer email
#   %cr: committer date, relative
#   %ci: committer date, ISO 8601-like format
#   %an: author name
#   %ae: author email
#   %ar: author date, relative
#   %ai: author date, ISO 8601-like format
#   %s: subject
# my awesome git log replacement
lol  = log --graph --pretty=format:\"%C(auto)%h%d%Creset %C(cyan)(%cr)%Creset %C(green)%cn <%ce>%Creset %s\"
# same as above, but ISO date
lold = log --graph --pretty=format:\"%C(auto)%h%d%Creset %C(cyan)(%ci)%Creset %C(green)%cn <%ce>%Creset %s\"
# using build-in standards
lol2 = log --oneline --graph --decorate
# shows branches and their last commits
lol3 = log --all --graph --decorate --oneline --simplify-by-decoration

在Linux或类似系统上,可以使用单引号'而不是双引号"

[alias]
lol = log --graph --pretty=format:'%C(auto)%h%d%Creset %C(cyan)(%cr)%Creset %C(green)%cn <%ce>%Creset %s'

这样,只需运行git lol或其他变体即可看到漂亮的输出。

这是输出git lol --simplify-by-decoration

git哈哈输出

  • 看上去不错。:)
  • lol比容易输入log,而且听起来也更好。
    • git log如果需要,还可以访问常规文件。
  • 您的眼睛可以通过不同的颜色快速扫描内容。
  • 对于具有许多贡献者的大型项目/组织,名称和电子邮件非常有用。
  • 使用默认的颜色为哈希/引用,因为它已经很好。

这是git lold带有ISO格式日期的输出。查看确切的提交日期/时间很有用,此外还可以轻松查看贡献者的时区。

在此处输入图片说明

编辑2020-06:添加了屏幕截图。更新为%C(auto)%h(提交哈希)和%d(引用名称)使用(自动/默认着色)。%cn除了电子邮件外,还添加了(提交人姓名)。


1
我收到一个解析错误:git log --graph --pretty=format:\"%C(yellow)%h%Creset%C(cyan)%C(bold)%d%Creset %C(cyan)(%cr)%Creset %C(green)%ce%Creset %s\" bash:意外令牌'('附近的语法错误
frakman1

2
@ frakman1-您需要转义“ s以便使上述行在终端中运行
尝试

2
更正的行:git log --graph --pretty =格式:“%C(黄色)%h%Creset%C(青色)%C(粗体)%d%Creset%C(青色)(%cr)%Creset% C(green)%ce%Creset%s”
RedSands

1

我更喜欢这种格式,不包含作者姓名,也不包含提交的实际日期。

git log --graph --pretty=format:"%C(yellow)%h%x09%Creset%C(cyan)%C(bold)%ad%Creset  %C(green)%Creset %s" --date=short
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.