如何使Git日志显示所有今天的提交?

87
我希望能够使用 git log 命令查看我今天提交的所有代码。我尝试了使用参数--after="yesterday",但是这种方式对我来说有些复杂。是否有更简单的命令来实现同样的效果?
6个回答

109

编辑:由于这是被接受的答案,我无法删除它,因此我在这里发布@Simon的答案:

git log --since="6am"

当然你可以自行调整时间,使其符合你认为的“早晨” :)


10
在 Git 1.5.6.5 上似乎无法运行,顺带一提。我知道这是一个旧版本,但我认为这可能会对某些人有所帮助。git log --after="yesterday"似乎是最接近正确的方法,但它最终会包括昨天发生的事情以及之后发生的事情。 - user153275
3
对我来说,git log --since="yesterday" 很有效。加上 --pretty="oneline" 看起来也很好看... (git 版本为 1.7.10) - Nick
--since和--after是同义词,因此答案建议与问题中的相同。这将提供过去24小时的提交记录(因此@agentbanks217无法看到昨天的提交记录)。我在下面给出了不同的答案。 - cogg
2
此外,像“06:00”这样的时间也可以使用,适用于那些不喜欢使用上午/下午的人。 - Hubro
1
我曾经想象过这个功能会一直持续到第二天早上5:59。但是,它只列出了同一天的提交记录(也就是说,在午夜后它就停止工作了)。 - binaryfunt

73

也许最好的方法是使用

git log --since="6am"

你可以根据自己的方便调整时间 ;)


1
还可以添加 --all 选项来查看该时期内所有分支的日志。 - schoetbi
我选择了这个,因为它似乎比另一个早了几天。 - astrochun

29

要获取今天所有的提交记录...

git log --since=midnight

这个命令会显示从今天午夜12点到晚上11:59的提交记录,对吗? - Bhumit 070

27

你可以创建别名来缩短此命令

git config --global alias.today 'log --since=7am'

然后执行:

git today

9
已经有一些有用的正确答案了(例如 git log --since="6am"),但是奇怪的是 Git 的特殊日期在文档中缺失(至少在 Google 搜索 "yesterday" "noon" site:git-scm.com 上没有返回结果)。
有方法可以找出可用的内容,例如Specification for syntax of git dates的答案特别有用。在Ryan O'Hara指出的一个答案中,
他说:“看起来它接受所有它可以输出的格式,就像在--date选项的文档中描述的那样:”

--date=(relative|local|default|iso|rfc|short|raw)

仅适用于以人类可读格式显示的日期,例如使用--pretty时。log.date配置变量为日志命令的--date选项设置默认值。

--date=relative 显示相对于当前时间的日期,如“2小时前”。

--date=local 显示用户所在时区的时间戳。

--date=iso(或--date=iso8601)以 ISO 8601格式显示时间戳。

--date=rfc (或--date=rfc2822)以 RFC 2822格式显示时间戳,通常在电子邮件中找到。

--date=short 仅以YYYY-MM-DD格式显示日期,不显示时间。

--date=raw 以内部原始 git 格式的 %s %z 格式显示日期。

--date=default 显示原始时区(提交者或作者的时区)的时间戳。

我最喜欢的答案是来自me_and的答案,他将我们引导到git date.c 类。在那里向下扫描,您会找到这段代码(在撰写本文时,它位于第925行)。
static const struct special {
    const char *name;
    void (*fn)(struct tm *, struct tm *, int *);
} special[] = {
    { "yesterday", date_yesterday },
    { "noon", date_noon },
    { "midnight", date_midnight },
    { "tea", date_tea },
    { "PM", date_pm },
    { "AM", date_am },
    { "never", date_never },
    { "now", date_now },
    { NULL }
};

尽管我查看了date_tea函数,但我确定要使用git log --before=tea。我认为他们没有阅读鲁珀特·布鲁克的作品。

static void date_tea(struct tm *tm, struct tm *now, int *num)
{
    date_time(tm, now, 17);
}

4
顺便提一下,这个也可以用:
git log --since=am

6
请注意,这相当于“--since=noon”。 - yoyo

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