如何git的日志--since算什么?(How does git log --since count

2019-08-16 15:51发布

我有一个简单的测试库,只需多次提交,并希望看到的日期和时间过滤日志:

$ git log --author="automatix" --since="2013-01-30" --pretty -- test
commit ea0719bef142659fa561c9d040b2120012ed0184
Date:   Thu Jan 31 02:03:12 2013 +0100

commit ab4a8387bc4d9bdb4f67212df77eb1fc3d8b6304
Date:   Thu Jan 31 01:59:11 2013 +0100

commit a0b027beba2cd03571bb9475b9db9542f8efe990
Date:   Thu Jan 31 01:50:38 2013 +0100

commit add77c8fe2ba9254c11b98e14facede3420dc51c
Date:   Thu Jan 31 01:48:34 2013 +0100

commit e6e323c05d37c74fcabeb9186b95c0d49b862e6f
Date:   Thu Jan 31 01:46:27 2013 +0100

commit 8c286391e54d3fc1e210950b1320fd6f013a8f84
Date:   Thu Jan 31 01:41:27 2013 +0100

commit 9c880595e57f717383796fa2940f41f0f42f7e2a
Date:   Thu Jan 31 01:38:17 2013 +0100

commit a95527f36a533e1ecba1aadceea31a9dcbe1a8db
Date:   Thu Jan 31 01:30:00 2013 +0100

选择的第一提交被a95527f36a533e1ecba1aadceea31a9dcbe1a8db2013-01-30 01:30:00 。 8个提交被选择:

$ git log --author="automatix" --since="2013-01-30" --format=oneline -- test | wc
      8      34     498

好。 现在我既然选择2013-01-31

$ git log --author="automatix" --since="2013-01-31" --format=oneline -- test | wc
      0       0       0

什么? 好吧,这应该意味着,那since规则不包括起始日期的提交。 对?

但是,让我们继续:

$ git log --author="automatix" --since="2013-01-31 01:30:00" --pretty -- test
commit ea0719bef142659fa561c9d040b2120012ed0184
Date:   Thu Jan 31 02:03:12 2013 +0100

commit ab4a8387bc4d9bdb4f67212df77eb1fc3d8b6304
Date:   Thu Jan 31 01:59:11 2013 +0100

commit a0b027beba2cd03571bb9475b9db9542f8efe990
Date:   Thu Jan 31 01:50:38 2013 +0100

commit add77c8fe2ba9254c11b98e14facede3420dc51c
Date:   Thu Jan 31 01:48:34 2013 +0100

commit e6e323c05d37c74fcabeb9186b95c0d49b862e6f
Date:   Thu Jan 31 01:46:27 2013 +0100

commit 8c286391e54d3fc1e210950b1320fd6f013a8f84
Date:   Thu Jan 31 01:41:27 2013 +0100

commit 9c880595e57f717383796fa2940f41f0f42f7e2a
Date:   Thu Jan 31 01:38:17 2013 +0100

commit a95527f36a533e1ecba1aadceea31a9dcbe1a8db
Date:   Thu Jan 31 01:30:00 2013 +0100
$ git log --author="automatix" --since="2013-01-31 01:30:00" --format=oneline -- test | wc
      8      34     498

现在,当我写的开始时间为好,开始时间的提交也包括在内

我不明白的逻辑。 任何人都可以解释,为什么这么奇怪呢?

谢谢

Answer 1:

在情况下,它可以帮助别人谁在这里的土地和我一样,有点研究,我发现,使用后的ISO8601格式也可以工作:

git log --since="2014-02-12T16:36:00-07:00"

这会给你的精度精确到秒。 注意:您还可以使用:

git log --after="2014-02-12T16:36:00-07:00"
git log --before="2014-02-12T16:36:00-07:00"
git log --since="1 month ago"
git log --since="2 weeks 3 days 2 hours 30 minutes 59 seconds ago"

等等

当然,这并不能“解释为什么这么奇怪。” 然而,可以肯定的解决了这个问题对我来说。


编辑:

更多的研究,我发现了“为什么这么奇怪”:
事实证明,当你不指定日期格式, git的日志默认为作者的任何时区或提交日期 ,意为一致的行为,它的东西,如明确声明你的日期格式是有用的:

git log --date=local

最后,当你不指定时间,则默认为本地时间,当你运行该命令。

长话短说,作为具体应该解决的问题:

git log --date=local --after="2014-02-12T16:36:00-07:00"

此外,您还可以使用以下命令永久设置默认的日期格式:

git config log.date local

你可以使用这些值中的任何一个: (relative|local|default|iso|rfc|short|raw)



文章来源: How does git log --since count?
标签: git git-log