git log:仅显示昨天的提交

17

git log --since=yesterday --until=today不能正常工作,因为它将包含今天的提交记录。

git log --since=yesterday --until=yesterday也不能正常工作,因为它将不会显示任何内容。

我假设“yesterday”对应前一天的凌晨12:01,而“today”对应当前时间。这在某种程度上是有道理的,但对我来说并没有什么帮助。

我还希望将此功能用于脚本中,所以不能硬编码日期/时间。难道唯一的选择就是计算昨天的日期并手动传递小时数吗?

编辑:

我注意到以下内容。在最新版git的源代码中,似乎“yesterday”(请参考此处的代码)表示当前时间之前的24*60*60秒。因此,根据您需要的精度,可能会有所不同。在代码的上面一行,您可以看到“today”确实意味着现在。

3个回答

25

我想找一种方法来显示所有自“昨天”以来的提交记录,但是我一直遇到问题,无法获取24小时前的提交(如果现在是上午11点,我只使用 --since=yesterday,则无法获取例如在上午10:30提交的提交记录,正如先前所指出的那样)。

git log --since=yesterday.0:00am

或者更方便地说

git log --since=yesterday.midnight

问题已经解决。感谢"tinifni"提供的非常有用的要点:https://gist.github.com/tinifni/3756796


也许可以使用git log --since=yesterday.midnight --until=midnight命令? - n.r.

4

您无需计算日期:

git log --since=yesterday --before=0am

但是,请注意 git 究竟将哪一天的开始视为零点。以下是一个小演示:

git log --since=yesterday --before=0am | grep Date:
Date:   Wed Jul 2 18:01:28 2014 +0200
Date:   Wed Jul 2 17:59:39 2014 +0200
Date:   Wed Jul 2 17:59:22 2014 +0200
Date:   Wed Jul 2 17:02:37 2014 +0200
Date:   Wed Jul 2 16:53:52 2014 +0200

git log  | grep Date:
Date:   Wed Jul 2 18:01:28 2014 +0200
Date:   Wed Jul 2 17:59:39 2014 +0200
Date:   Wed Jul 2 17:59:22 2014 +0200
Date:   Wed Jul 2 17:02:37 2014 +0200
Date:   Wed Jul 2 16:53:52 2014 +0200
Date:   Wed Jul 2 16:02:49 2014 +0200
Date:   Wed Jul 2 15:41:15 2014 +0200
Date:   Wed Jul 2 15:16:47 2014 +0200
Date:   Wed Jul 2 14:34:15 2014 +0200
Date:   Wed Jul 2 10:48:25 2014 +0200
Date:   Wed Jul 2 10:44:59 2014 +0200

显然,我的时区的一天从下午4点30分开始!巧合吗?我认为不是。目前是4:30,正如AlexanderBird指出的那样,在Git源代码中昨天是当前时间的24小时之前。


你今天有任何提交吗?如果有的话,我相信这些提交也会显示在结果中。-- 至少对于git v1.7.9和v1.8.3.msysgit.0是如此。你使用的是哪个版本的git? - Alexander Bird
你说得对,让我调查一下,我相信这曾经是可以工作的。我使用的是git 2.0.1版本。 - Pak
@AlexanderBird 不过要小心,我的电脑上 Git 的日期有时候会出现奇怪的时间! :) - Pak
你所说的尴尬时刻是什么意思?如果您认为对其他人有帮助,可以通过编辑答案来解释。 - Alexander Bird
1
好发现。你可以用 git log --after=tea 来评估你的生产力! - Pak

1
#!/usr/bin/ruby
require 'date'
today = Date.today.strftime("%m/%d/%Y")
yesterday = Date.today.prev_date.strftime("%m/%d/%Y")
puts `git log --since=#{yesterday} --until="#{today}"`

请注意,我认为这比仅仅将字符串“yesterday”传递给git cli更准确,因为“yesterday”只是指当前时间之前24*60*60秒。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接