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

Posted

技术标签:

【中文标题】如何让 Git 日志显示今天所有的提交?【英文标题】:How to make Git log show all of today's commits? 【发布时间】:2011-07-04 01:27:55 【问题描述】:

我希望能够看到我今天使用git log 所做的所有提交。我想出了git log --after="yesterday" 但是,这对我来说似乎有点尴尬,有没有更简单的命令可以达到同样的效果?

【问题讨论】:

【参考方案1】:

已经有几个有用的正确答案(例如git log --since="6am"),但奇怪的是文档中缺少 Git 的特殊日期(至少谷歌搜索 "yesterday" "noon" site:git-scm.com 没有返回结果)。

有一些方法可以找出可用的内容,例如Specification for syntax of git dates 的答案特别有用。在一个Ryan O'Hara points out那个

it seems to accept all formats that it can output, as described in the documentation for the --date option:

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

仅对以人类可读格式显示的日期生效,例如在使用 --prettylog.date config 变量设置日志的默认值 命令的--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 显示原始时区(提交者或作者)的时间戳。

我最喜欢的答案是from me_and,他将我们引导至the git date.c class。向下扫描,你会发现这段代码(在撰写本文时它位于第 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 
;

我肯定在使用git log --before=tea,尽管查看date_tea 函数我认为他们没有读过Rupert ***e:

static void date_tea(struct tm *tm, struct tm *now, int *num)

    date_time(tm, now, 17);

【讨论】:

【参考方案2】:

为了获得今天所有的提交...

git log --since=midnight

【讨论】:

【参考方案3】:

顺便说一句,这也有效:git log --since=am

【讨论】:

小心,这相当于--since=noon【参考方案4】:

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

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

然后执行:

git today

【讨论】:

【参考方案5】:

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

git log --since="6am"

当然,您可以将时间调整为对您来说足够“早上”的时间:)

【讨论】:

这似乎不适用于 git 1.5.6.5,FWIW。我知道,旧版本等等,但我认为这可能会对某人有所帮助。 git log --after="yesterday" 似乎最接近正确,但它最终包括昨天发生的事情以及昨天之后发生的事情。 对我来说:git log --since="yesterday" 效果很好。 --pretty="oneline" 看起来也不错...(git 版本 1.7.10) --since 和 --after 是同义词,因此答案与问题中的内容相同。这将给出最后 24 小时的提交(因此 @agentbanks217 看到昨天的提交存在问题)。我在下面给出了不同的答案。 另外,像"06:00" 这样的时间也适用于那些不喜欢上午/下午的人 我原以为这会一直工作到第二天早上 5:59。但是,它只列出同一天的提交(即,它在午夜停止工作)【参考方案6】:

也许最好是使用

git log --since="6am"

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

【讨论】:

还要加上--all查看期间所有分支的日志 我投票给了这个而不是另一个,因为它似乎早了几天。

以上是关于如何让 Git 日志显示今天所有的提交?的主要内容,如果未能解决你的问题,请参考以下文章

如何反转 `git log --grep=<pattern>` 或如何显示与模式不匹配的 git 日志

使用 Git,我如何显示所有共享一个共同祖先的提交树?

如何使用 Tig 浏览 Git 日志

如何在 git 存储库中重写提交者名称? [复制]

Git changelog:如何将所有更改都添加到特定标记?

git如何让文件只提交一次,之后对文件改动都不进行提交,且所有分支起效