现在是3月8日。我希望看到3月1日以来的git历史。为此,我正在使用命令:
$ git log --pretty="%cd - %h - %an - %s" --after="2013-3-01 0am"
工作正常。然后我希望“将来”看到历史(从3月8日起增加after
值+1天)。例如:
$ git log --pretty="%cd - %h - %an - %s" --after="2013-3-11 0am"
命令返回空历史记录,这是正确的。然后after
值等于18:
$ git log --pretty="%cd - %h - %an - %s" --after="2013-3-18 0am"
Git开始返回整月历史记录。为什么?在我的示例中,git log
日期时间格式似乎有问题。
git版本1.7.12.4(Apple Git-37)
答案 0 :(得分:1)
此问题有open bug。如果您从源代码构建了git,则会包含test-date
实用程序。以下是通过它运行各种日期的一些结果(注意 - 第18个不再是我的断点,所以使用第19个):
$ ./test-date approxidate "2013-3-01 0am"
2013-3-01 0am -> 2013-03-01 19:22:21 +0000
$ ./test-date approxidate "2013-3-11 0am"
2013-3-11 0am -> 2013-03-11 19:22:21 +0000
$ ./test-date approxidate "2013-3-19 0am"
2013-3-19 0am -> 2013-03-03 19:22:21 +0000
很明显,所有情况下的时间都有问题,所以我们来确定时间:
$ ./test-date approxidate "2013-3-01 0:00"
2013-3-01 0:00 -> 2013-03-01 08:00:00 +0000
$ ./test-date approxidate "2013-3-19 0:00"
2013-3-19 0:00 -> 2013-03-19 07:00:00 +0000
看起来好一点,我们的未来日期不再严重错误,但时间与我的时区相关,并且在有和没有DST之间有所区别(E:对于任何未来的读者,DST转换发生在2013- 03-10,所以这些日期确实涵盖了转变。)
$ ./test-date approxidate "2013-3-19 0:00 +0000"
2013-3-19 0:00 +0000 -> 2013-03-19 00:00:00 +0000
现在我们的日期看起来好一点了。如果我确实希望时区生效,现在可以轻松更改为-0800
/ -0700
,PST
,PDT
或任何其他时区。
简而言之,有两个问题:
为了解析任何日期,git会丢弃您的dd
并在当月的某一天使用您的mm
:
$ ./test-date approxidate "2013-3-20"
2013-3-20 -> 2013-03-03 19:22:21 +0000
$ ./test-date approxidate "2013-4-19"
2013-4-19 -> 2013-03-04 19:22:21 +0000
$ ./test-date approxidate "2013-4-32"
2013-4-32 -> 2013-03-04 19:22:21 +0000
您的问题应该通过修复时间和根据意图添加时区来解决。