假设一个git repo有12次提交并且在昨天中创建了4次(例如, 2199年12月31日)。
git log --oneline
将输出:
9675a65 fix: a bug in feature B
041e1b2 feat: add feature B
d0f58e3 refactor: apply DPs to feature A
e933840 feat: add feature A
a6a235d chore: update version
...
f982bfd chore: initial commit
根据我的理解,如果我今天运行git log --since=1.day
(2200年1月1日,),我应该得到一个输出,其中包括昨天的最后4次提交(在示例中:from 壮举:将功能A 添加到修复:功能B中的错误)。
但是,相反,我只得到了最后3次提交(从重构:将DP应用于功能A 到 fix:功能B 中的错误)。 git log --since=1.day
的输出中未包含昨天创建的第一次提交(功能:添加功能A )。
我在这里想念东西吗?
答案 0 :(得分:2)
计算机时间总是比看起来复杂。 ?
在这种情况下,似乎只是您在考虑从特定日期选择提交方面。但是,在Git中,--since
(或--after
,具有相同的含义)计算出精确的秒数:
--after=2020-07-18
表示“无论现在是什么时候,但在那一天之后”,并且:
--after=1.day.ago
表示“自1天前恰好开始24小时后”或“从这一秒中减去86400秒,并将其用作后值”。您可以像you commented一样精确:
--after=2020-07-18-00:00:00
强制Git使用指定日期的午夜。
请注意,--before
/ --until
和--after
/ --since
始终使用提交者时间戳,而不是作者时间戳< / em>。另请参见Specification for syntax of git dates中链接的this blog entry at alexpeattie.com和this answer。有关更多背景信息,请参见Falsehoods programmers believe about time。