Git日志--since = <秒,自=“ =” epoch =“”>行为异常

时间:2018-08-21 16:04:48

标签: git

我有一个git存储库,其中的提交由不同时区的不同作者完成。

我想使用git log来查看历史记录,因为特定的时间点是从纪元以来的秒数定义的。

根据提供的图像-它失败。可能是什么问题? screen-shot of the command

2 个答案:

答案 0 :(得分:3)

您在这里有多个单独的问题,我认为并非所有问题都可以单独使用Git前端命令解决。

首先,每个提交都有两个日期/时间戳。有一个作者日期字段和一个提交人日期字段。要同时查看两者,请使用git log --format=fuller例如

commit 5571d085b3c9c2aa9470a10bcf2b8518d3e4ec99
Merge: bedb914551 5cf8e06474
Author:     Junio C Hamano <gitster pobox.com>
AuthorDate: Wed Jul 18 12:20:35 2018 -0700
Commit:     Junio C Hamano <gitster pobox.com>
CommitDate: Wed Jul 18 12:20:35 2018 -0700

虽然两者通常是完全相同的(在这种情况下),但有时却不相同:

commit 88a8ecaeaa87a84100c4eb49fb9af7a77977cc1b
Author:     Stefan Beller <sbeller google.com>
AuthorDate: Thu Jun 28 19:10:48 2018 -0700
Commit:     Junio C Hamano <gitster pobox.com>
CommitDate: Fri Jun 29 09:29:44 2018 -0700

--since--until操作在提交日期上起作用,但是默认设置是显示作者日期。请参阅我对How to get git to show commits in a specified date range for author date?的回答,另请参见Tim Beigeleisen's answer,它显示了如何使用格式指令以适用于awk或类似格式的特定格式提取特定日期。

剩下的问题就是您已经确定的问题:时区信息很棘手。在这里,请参阅git: timezone and timestamp format,并请注意格式指令%ai%ci不遵循--date=,而%ad%cd则符合。 --date=指令随着时间的推移而扩展,因此从Git 2.14开始,您可以使用--date=local--date=format-local:...等(并进行了测试以确保它们都可以正常工作)。尤其参见提交6eced3ec5e5d7fbe61de2791e2627b1acf1246b3

答案 1 :(得分:0)

我自己进行了一些测试,发现在设置了适当的时区之后,--since=参数在UTC上运行,而与环境变量TZ的设置无关。

这就是为什么您看到第二次提交的原因,因为UTC为+0000,并且第二次提交发生在您的--since设置之后。

将时间标准化为UTC(希望您喜欢我的ASCII表):

              |    Given Time    |   in UTC
---------------------------------------------
--since=value | 1534762785 +0000 | 1534762785
commit c584d9 | 1534863946 +0600 | 1534869946
commit 4143b8 | 1534762784 +0200 | 1534764784

您可以看到它仍然是正确的,并且两次提交都落在您的--since参数之后。

在git 2.14.1中测试