如何让 `git log` 只显示提交日期,没有其他

How to make `git log` show only the commit date, nothing else

我只想通过 git log 仅显示 提交日期 来快速浏览项目的历史记录,仅此而已。我们怎样才能最好地做到这一点?


更新:

原来我实际上是在询问 作者 日期,这就是 git log 显示的日期。要查看 提交者 日期,可以不同,运行 git log --pretty=fuller.

另见此处:Why is git AuthorDate different from CommitDate?

为了帮助说明有不同的日期:要在 运行 宁 git commit 时设置 author 日期,请使用:

git commit ---date "<date>"

要同时设置 提交者 日期,您必须执行以下操作:

GIT_COMMITTER_DATE="<date>" git commit --date "<date>"

看这里:How can one change the timestamp of an old commit in Git?

1。简单的方法:

(这个答案是第一个答案;这部分是在@TTT 写了 之后添加的,这教会了我这个更简单的方法)。

# ad = author date
git log --format=%ad

# cd = committer date
git log --format=%cd

%cd 显然代表“提交者日期”。将其与代表“作者日期”的 %ad 进行对比。 (我不确定有什么区别,也不确定这些日期如何或为什么会不同)。

谢谢,。现在我明白了它是如何工作的,我在文档中找到了适当的格式字符串部分:

执行 man git log,然后按 / 搜索正则表达式 format:<format-string> 并输入该正则表达式并按 Enter。搜索 %cd 也会跳转到该部分。

2。困难的方法(我最初的尝试):

测试于 Linux Ubuntu:

获取作者日期(--format=%ad,上面,我现在知道 after-the-fact)的一种方法是通过 grep 过滤 git log 的输出。这是 git log HEAD 的答案。将 HEAD 替换为您想要的任何分支名称或提交哈希。

仅查看所有提交的日期:

git log HEAD | grep 'Date:' | grep -o '   .*$' | grep -o '[^\r\n\t\f\v ].*$'

示例输出:

Sun Apr 26 19:17:49 2020 -0700
Sun Apr 26 16:51:21 2020 -0700
Sun Apr 26 15:35:16 2020 -0700
Sat Apr 25 23:21:37 2020 -0700
Sat Apr 25 23:12:07 2020 -0700
Sat Apr 25 23:06:44 2020 -0700
Tue Apr 14 23:02:34 2020 -0700
Sun Apr 5 23:26:20 2020 -0700
Sun Apr 5 23:20:34 2020 -0700
Sun Apr 5 18:08:44 2020 -0700
Sun Apr 5 17:56:08 2020 -0700
Sun Apr 5 10:06:04 2020 -0700
Sat Apr 4 20:58:33 2020 -0700
Sat Mar 21 14:38:53 2020 -0700
Thu Mar 19 20:37:27 2020 -0700
Thu Mar 19 18:16:55 2020 -0700
Thu Mar 19 18:01:53 2020 -0700

或者,要仅查看 most-recent 日期 ,请添加 -1:

git log -1 HEAD | grep 'Date:' | grep -o '   .*$' | grep -o '[^\r\n\t\f\v ].*$'

输出:

Sun Apr 26 19:17:49 2020 -0700

...或要查看 只是 最旧的 日期,请使用 $(git rev-list --max-parents=0 HEAD) 而不是 HEAD(再次,将该命令中的 HEAD 替换为您要查看的适当分支或提交):

git log -1 $(git rev-list --max-parents=0 HEAD) | grep 'Date:' \
    | grep -o '   .*$' | grep -o '[^\r\n\t\f\v ].*$'

输出:

Thu Mar 19 18:01:53 2020 -0700

说明

  1. $(git rev-list --max-parents=0 HEAD) 获取第一次提交的提交哈希。
    1. 在这里查看我的回答:How to show first commit by 'git log'?
  2. grep 'Date:' 仅查找其中包含文本 Date: 的行。
  3. grep -o ' .*$' 通过仅匹配 3 个空格和后面的文本来剥离 Date: 部分。
    1. 关于 -o 部分,请参阅:Can grep show only words that match search pattern?
  4. grep -o '[^\r\n\t\f\v ].*$' 通过仅匹配 non-whitespace 个字符去除前面的空格。
    1. 在这里查看我的回答:Unix & Linux: Any non-whitespace regular expression
  5. -1git log 中表示:“仅 1 次提交”
  6. HEAD 是 currently-checked-out 提交哈希

如果您只想查看 提交者 日期(使用当前 ID 写入提交的日期):

git log --format=%cd

如果您只想查看 author 日期(提交最初编写的日期,但如果提交被修改、变基、cherry-picked, 等等,导致它获得一个新的提交 ID):

git log --format=%ad

有关提交者和作者日期之间差异的更多信息:Why git AuthorDate is different from CommitDate?

日期可以用不同的方式显示。 Here's a list of built-in options.

此外,如果您不想使用寻呼机,只需在 git 命令后添加 --no-pager,如下所示:

git --no-pager log --format=%ad