Git日志:按提交者日期过滤

45
我有这样的一次提交。
commit 8a183536da1641afa6bd5a27ae391b387b7cd052
Author:     hidden
AuthorDate: Fri Sep 7 10:13:59 2012
Commit:     hidden
CommitDate: Fri Dec 7 17:29:24 2012

我想通过AuthorDate筛选日志并显示提交记录。

我尝试使用--since--until选项,但它实际上是按照CommitDate进行过滤。

这意味着我只能获取到由CommitDate筛选出来的提交记录。

git log --since='2012-12-01' --until='2012-12-10'

如果我想获取从'2012-09-01'到'2012-09-10'之间的提交过滤器,有什么建议吗?


@skalee,“Sep”和“Dec”不是同一件事... - underscore_d
3个回答

15
git log --format=format:"%ai %aE %s"

然后按照作者名称和/或日期进行grep!


git log --format=format:"%ai %aE %s" | grep '^2020-05-29.user@email.$' - imaginabit

9

很抱歉,您需要进行一些脚本编写:

git log --format="%ad %H" --date=iso | sort | ruby -ane 'date = $F[0] ; hash = $F[3] ; puts hash if ("2013-08-23".."2013-09-26").cover?(date)'

以下是我收到的内容:

3eddb854eaea971e9a60147153f0f3c9be4f1a5a
dfeefd4715c4fddef0957c5aff238c525bb1def6
db654badb97f3784286171d4645e9face6a42865
62cdba07e6ae0cd28752491a83f584d3e18a5619
7643a0458a54200f8944583d66c089d63c1bf688
23b720852a36e959d0f45f9d11f05d4aa7ee0cb9
f729ec9c5bf37ee0284a8db47cbc79a0b53145bb
bc2d647ae86fbff1246ba163a5a99d25ed2f3523
a0752b3cbae39698449be953153ddaafe35c054c
8e88fffc75cbdda333c86cb4f5eb9b5b30263c27

不幸的是,git log 3eddb854eaea971e9a60147153f0f3c9be4f1a5a..8e88fffc75cbdda333c86cb4f5eb9b5b30263c27不能保证可行,因为这些提交可能在不同的分支中。

让我们解释一下我做了什么:

  1. --format="%ad %H" – 将日志格式化为author_date commit_hash
  2. --date=iso – 日期格式为YY-mm-dd HH:MM:SS
  3. sort – Unix命令,用于按字母顺序排序行;它适合按ISO格式排序日期
  4. ruby -ane – 执行ruby脚本。-n表示对每一行执行,-a将这些行拆分并将字段放入$F数组中,-e说明要执行的脚本
  5. ("2011-02-23".."2011-02-26").cover?(date) – 创建从两个字符串中生成的范围,并检查日期是否包含在其中(按字母顺序的意义上,我们没有解析这些日期)

我不知道下一步该怎么做(为了给你更好的日志),但很高兴把你带到这个点。


3

我有时想在特定日期找到由我编写的提交。为此,我使用git log --all --author=jpo --format="%ai %s" |grep -E ^2015-09-01命令。不幸的是,该方法不能通用于按日期范围筛选,但对于本问题所使用的范围可以轻松完成:git log --all --author=jpo --format="%ai %s" |grep -E ^2012-12-(0.|10)。如果你想要从提交中获取更多信息,除了作者日期和提交消息之外,请添加更多参数到格式字符串中(查看git help log页面的PRETTY FORMATS部分)。


1
这是一个非常强大的方法。我一直在使用它,稍微调整一下就可以回顾几个月或季度的工作,看看“这个季度我做了什么?”例如:git log --all --author=cabbey --format="%as %h %s %d" | grep -E ^2021-1[012]-%h 很方便,可以将哈希值复制/粘贴到 git show 命令中,而 %d 则添加了分支名称(我很懒得清理它们,但在这里很有用),以获取每个分支上的最终提交,这有助于我知道何时停止处理该主题。 - cabbey

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