git log
git 中 commit 的日期标记实际上包含了两个日期,它们分别是 AuthorDate
和 CommitDate
。
commit d259a04b7289d002c374cd0266e1af1b8a5824b3
Author: User Name <username@xxx.com>
Date: Wed Apr 21 16:26:47 2021 +0800
...
当我们使用选项 --pretty=fuller
时才会显示全部时间 git log --pretty=fuller
。可见默认显示的时间是 AuthorDate
。
Author: User Name <username@xxx.com>
AuthorDate: Wed Apr 21 16:26:47 2021 +0800
Commit: User Name <username@xxx.com>
CommitDate: Thu Apr 22 10:12:01 2021 +0800
...
实际上我们可能更关注 CommitDate
,毕竟看 log 的时候希望按合入顺序来看。特别是有时候造成我们时间匹配和过滤上出错。关于 AuthorDate 和 CommitDate 的区别,大家可以参考 stackoverflow 上的这个问题。
git 默认显示的是 AuthorDate(%ai)
,git log 根据日期时间过滤的时候,根据的是 CommitDate(%ci)
。CommitDate
是该 commit 被 merge 的时候,或者 rebase 的时候的时间。
可以通过下面的命令对比每个 commit 的两个时间。
$ git log --format=format:"%ai, %ci %aE %s"
%ai, author date
%ci, commit date
%aE, author email
%s, commit subject