获取日期之后的提交历史记录(从/参数后)

时间:2013-03-08 18:27:46

标签: git shell date version-control

现在是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)

1 个答案:

答案 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 / -0700PSTPDT或任何其他时区。

简而言之,有两个问题:

  1. 您的时间没有得到正确解析。一旦包含时间组件,git就可以更灵活地解析日期。
  2. 为了解析任何日期,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
    
  3. 您的问题应该通过修复时间和根据意图添加时区来解决。