我曾经git reflog在创建特定分支时标识哈希值。我得到的哈希值fe1ddcdef。我尚未将此分支推送到远程。我现在正在寻找发生日期和时间fe1ddcdef。git 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'以添加哈希摘要和提交的主题消息。
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制作自己的格式。另请查看此答案以获取更多选项。
现在我试图找到的日期和时间
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。
引用提交的标准化方法是abbreviated hash (subject, date),没有时间。它被称为“参考”。
在 Git 2.25(2020 年第一季度)中,“git log家庭学习”--pretty=reference以通常用于在日志消息中引用它的格式给出提交的名称。
这种格式很接近您正在寻找的格式。
\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 日)rscharfegitster
\n\n\n
pretty:提供短日期格式签署人:Ren\xc3\xa9 Scharfe
\n
\n签署人:Denton Liu
\n\n添加占位符
\n%as和%cs分别格式化作者日期和提交者日期,不带时间部分,就像这样--date=short做,即喜欢YYYY-MM-DD。
为什么?
\n由于贡献和补丁:
\n\n\n
pretty: 实施 \'reference\'格式基于补丁者:SZEDER G\xc3\xa1bor
\n
\n签署者:Denton Liu
\n\n在某些项目(例如git.git)中引用其他提交的标准格式是
\nreference格式。
\n这在中描述Documentation/SubmittingPatches:
\n\n如果您想引用稳定分支历史记录中的先前提交,请使用格式“缩写哈希(主题,日期) ”格式,如下所示:
\n
\n\nRun Code Online (Sandbox Code Playgroud)\n....\n
Commit f86a374 (pack-bitmap.c: fix a memleak, 2015-03-30)\n noticed that ...\n....\nRun Code Online (Sandbox Code Playgroud)\n\n\n\n由于这种格式非常常用,请将其标准化为一种漂亮的格式。
\n
\n\n\'
\nreference\'
\n\nRun Code Online (Sandbox Code Playgroud)\n<abbrev hash> (<title line>, <short author date>)\n
\n\n此格式用于引用提交消息中的另一个提交,与
\n--pretty=\'format:%C(auto)%h (%s, %ad)\'. \n默认情况下,除非明确指定另一个选项,否则
日期格式为。\n与任何格式占位符一样,其输出不受其他选项(如和)的影响--date=short--dateformat:--decorate--walk-reflogs等其他选项的影响。
Git 2.25 之前,如WisdmLabs的回答所示,您可能会这样做:
\ngit show -s --date=short --pretty=\'format:%h (%s, %ad)\' <commit>\nRun Code Online (Sandbox Code Playgroud)\n现在(Git 2.25+):
\ngit show -s --pretty=reference <commit>\nRun Code Online (Sandbox Code Playgroud)\n以 Git 2.32(2021 年第 2 季度)为例,“ log --format=...”以各种格式显示时间戳。
请参阅提交 3593ebd,由\xc3\x86var Arnfj\xc3\xb6r\xc3\xb0 Bjarmason ( )提交 fbfcaec (2021 年 4 月 25 日) 。\n (由Junio C Hamano 合并 -- --在提交 e5d99d3中,2021 年 5 月 7 日)avargitster
\n\n\n
pretty tests:简化%aI/%cI日期格式测试签署人:\xc3\x86var Arnfj\xc3\xb6r\xc3\xb0 Bjarmason
\n
\n\n更改466fb67中添加的 %aI/%cI 日期格式(iso-strict)的不必要的复杂测试(“
\npretty:提供严格的 ISO 8601 日期格式”,2014-08-29,Git v2.2.0-rc0 - merge)改为使用自0df6211%as/%cs以来用于测试的相同模式(“ :提供短日期格式”,2019-11-19,Git v2.25.0-rc0 -合并在批次 #5中列出)。pretty