git如何记录-自计数? [英] How does git log --since count?
问题描述
我有一个仅包含几次提交的简单测试存储库,并且想查看经过日期和时间过滤的日志:
I have a simple test repository with just several commits and want to see the date&time filtered log:
$ 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
第一个选择的提交是2013-01-30 01:30:00
中的a95527f36a533e1ecba1aadceea31a9dcbe1a8db
.选择了8个提交:
The first selected commit is a95527f36a533e1ecba1aadceea31a9dcbe1a8db
from 2013-01-30 01:30:00
. 8 commits are selected:
$ 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
规则排除了开始日期的提交.对吧?
What? Ok, that should mean, that the since
rule excludes the commits of the startdate. Right?
但让我们继续:
$ 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
现在,当我还要编写开始时间时,都会包含开始时间的提交.
Now, when I'm writing the starttime as well, the commits of the starttime are included .
我不明白逻辑.谁能解释,为什么它如此奇怪?
I don't understand the logic. Can anybody explain, why it works so strange?
谢谢
推荐答案
In case it helps someone else who lands here like I did, after a bit of researching I found out that using ISO8601 format also works:
git log --since="2014-02-12T16:36:00-07:00"
这将使您精确到秒.注意:您也可以使用:
This will give you precision down to the second. Note: you can also use:
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"
等
当然,这并不能解释它为何如此奇怪的原因".但是,它无疑为我解决了这个问题.
Of course, this doesn't "explain why it works so strange." However, it certainly solved the problem for me.
经过更多研究,我发现为什么它如此奇怪":
事实证明,当您不指定日期格式时, git日志默认为作者的时区或提交日期,表示一致的行为,使用类似这样的显式声明日期格式很有用:
After a bit more research, I found out "why it works so strangely":
It turns out that when you don't specify a date format, git log defaults to either the author's timezone or commit dates, meaning for consistent behavior, it's useful to explicitly declare your date format with something like:
git log --date=local
最后,如果您未指定时间,则默认为您运行命令时的本地时间.
Lastly, when you don't specify a time, it defaults to your local time when you ran the command.
长话短说,具体应该可以解决问题:
Long story short, being specific should solve the problem:
git log --date=local --after="2014-02-12T16:36:00-07:00"
此外,您还可以使用以下命令永久设置默认日期格式:
Also, you can set the default date format permanently with the following command:
git config log.date local
您可以使用以下任一值:(relative|local|default|iso|rfc|short|raw)
you can use any one of these values: (relative|local|default|iso|rfc|short|raw)
这篇关于git如何记录-自计数?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!