如何通过哈希显示提交的日期和时间

Mik*_*Eng 11 git

我曾经git reflog在创建特定分支时标识哈希值。我得到的哈希值fe1ddcdef。我尚未将此分支推送到远程。我现在正在寻找发生日期和时间fe1ddcdefgit reflog只显示给我:

fe1ddcdef HEAD@{11}: checkout: moving from master to handoff

没有日期或时间。

git log太冗长了,因为它包含了我所有同事的提交,而我fe1ddcdef在那堆干草堆中找不到针头。

我怎样才能简单地找到提交的日期和时间fe1ddcdef

Obs*_*ian 15

只需使用:

git show fe1ddcdef
Run Code Online (Sandbox Code Playgroud)

…显示提交的内容。实际上,一旦有了标识提交对象的任何表达式,就可以在需要修订的所有地方使用它。这些表达式可以是十六进制哈希(偶数),分支名称或标记名称。它也可以是其中之一,与一个或多个运算符关联,例如“ ^”,“〜”或“ @”。

这意味着git log fe1ddcdef从这一点开始,您还可以用来获取分支的完整历史记录。

如果只想获取日期和时间,而没有其他内容,则可以输入:

git show --no-patch --no-notes --pretty='%cd' fe1ddcdef
Run Code Online (Sandbox Code Playgroud)

替换'%cd''%h %cd %s'以添加哈希摘要和提交的主题消息。

  • `%cI` 更适合脚本,例如在 `tar --mtime` 中使用。 (4认同)

Usa*_*jad 13

你可以试试--date

git reflog --date=iso
Run Code Online (Sandbox Code Playgroud)

它会给你每个哈希的时间戳

cd7c3721 HEAD@{2021-03-25 16:47:42 +0100}: commit: Updated paths
644bc38f HEAD@{2021-03-25 01:28:32 +0100}: commit: Add feign router
c7d62f34 HEAD@{2021-03-25 01:14:42 +0100}: commit: Add feign config
fdaedc9e HEAD@{2021-03-25 01:12:31 +0100}: commit: Add test config
Run Code Online (Sandbox Code Playgroud)

您还可以使用git Pretty format制作自己的格式。另请查看此答案以获取更多选项。

  • 请注意,这将显示 *reflog* 时间戳,这是 OP 检出该提交的时间。这可能就是他想要的。 (2认同)

tor*_*rek 6

现在我试图找到的日期和时间fe1ddcdef发生

“已发生”没有明确定义,但我可以注意到每个提交都有两个与之相关的日期和时间戳:作者日期提交日期

通常这两个是相同的,除非您使用复制提交的各种选项中的任何一个,在这种情况下,作者时间戳是第一次提交的日期,提交者时间戳是进行特定提交的时间。

两个时间戳都在用户的完全控制之下。但是,通常人们不会覆盖它们,因此它们与自己计算机的时钟一样准确(即,不是很准确)。

要查看两个日期,请使用,例如:

git log --no-walk --pretty=fuller fe1ddcdef
Run Code Online (Sandbox Code Playgroud)

要仅查看一个,您可以省略格式,或使用git show <hash>(也显示差异)。要获取一个或多个日期,请使用--pretty=format:<directives>--format=<directives>。打印作者日期的指令有格式,打印提交者日期的指令%a<letter>有格式%c<letter>,其中<letter>部分是d, D, r, t, i, 或 之一I。有关更多详细信息,请参阅文档PRETTY FORMATS 部分git log


Von*_*onC 5

引用提交的标准化方法是abbreviated hash (subject, date),没有时间。它被称为“参考”。

\n

在 Git 2.25(2020 年第一季度)中,“git log家庭学习”--pretty=reference以通常用于在日志消息中引用它的格式给出提交的名称。

\n

这种格式很接近您正在寻找的格式。

\n

请参阅提交 3798149提交 1f0fc1d提交 618a855提交 ac52d94提交 3e8ed3b提交 4982516、提交f0f9de2提交 fb2ffa7提交 bae74c9提交 bd00717(2019 年 11 月 20 日),作者:Denton Liu ( Denton-L)
\n请参阅Ren\xc3\xa9 Scharfe ( )的提交 0df6211(2019 年 11 月 20 日)。\n (由Junio C Hamano 合并 -- --提交 d37cfe3中,2019 年 12 月 10 日)rscharfe
gitster

\n
\n

pretty:提供短日期格式

\n

签署人:Ren\xc3\xa9 Scharfe
\n签署人:Denton Liu

\n
\n
\n

添加占位符%as%cs分别格式化作者日期和提交者日期,不带时间部分,就像这样--date=short做,即喜欢YYYY-MM-DD

\n
\n

为什么?
\n由于贡献和补丁:

\n
\n

pretty: 实施 \'reference \'格式

\n

基于补丁者:SZEDER G\xc3\xa1bor
\n签署者:Denton Liu

\n
\n
\n

在某些项目(例如git.git)中引用其他提交的标准格式reference格式
\n这在中描述Documentation/SubmittingPatches

\n
\n
\n

如果您想引用稳定分支历史记录中的先前提交,请使用格式“缩写哈希(主题,日期) ”格式,如下所示:

\n
\n
\n
....\n
Run Code Online (Sandbox Code Playgroud)\n
\n
    Commit f86a374 (pack-bitmap.c: fix a memleak, 2015-03-30)\n    noticed that ...\n....\n
Run Code Online (Sandbox Code Playgroud)\n
\n

由于这种格式非常常用,请将其标准化为一种漂亮的格式。

\n
\n

pretty-formats文档现在包括

\n
\n

\'reference \'

\n
\n
\n
<abbrev hash> (<title line>, <short author date>)\n
Run Code Online (Sandbox Code Playgroud)\n
\n
\n

此格式用于引用提交消息中的另一个提交,与--pretty=\'format:%C(auto)%h (%s, %ad)\'. \n默认情况下,除非明确指定另一个选项,否则
日期格式为。\n与任何格式占位符一样,其输出不受其他选项(如和)的影响--date=short--date
format:--decorate--walk-reflogs等其他选项的影响。

\n
\n
\n

Git 2.25 之前,如WisdmLabs回答所示,您可能会这样做:

\n
git show -s --date=short --pretty=\'format:%h (%s, %ad)\' <commit>\n
Run Code Online (Sandbox Code Playgroud)\n

现在(Git 2.25+):

\n
git show -s --pretty=reference <commit>\n
Run Code Online (Sandbox Code Playgroud)\n
\n

以 Git 2.32(2021 年第 2 季度)为例,“ log --format=...”以各种格式显示时间戳。

\n

请参阅提交 3593ebd,由\xc3\x86var Arnfj\xc3\xb6r\xc3\xb0 Bjarmason ( )提交 fbfcaec (2021 年 4 月 25 日) 。\n (由Junio C Hamano 合并 -- --提交 e5d99d3中,2021 年 5 月 7 日)avar
gitster

\n
\n

pretty tests:简化%aI/%cI日期格式测试

\n

签署人:\xc3\x86var Arnfj\xc3\xb6r\xc3\xb0 Bjarmason

\n
\n
\n

更改466fb67中添加的 %aI/%cI 日期格式(iso-strict)的不必要的复杂测试(“ pretty:提供严格的 ISO 8601 日期格式”,2014-08-29,Git v2.2.0-rc0 - merge)改为使用自0df6211%as/%cs以来用于测试的相同模式(“ :提供短日期格式”,2019-11-19,Git v2.25.0-rc0 -合并批次 #5中列出)。pretty

\n
\n