40

我有这样的承诺

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

这意味着我只能通过

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

如果我想通过 start_date '2012-09-01' 和 end_date '2012-09-10' 获得提交过滤器

有小费吗?

4

3 回答 3

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

然后按 AuthorName 和/或日期 grep!

于 2014-01-16T10:28:37.817 回答
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)– 从两个字符串创建范围并检查日期是否包含在内(在字母顺序的含义中,我们没有解析这些日期)

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

于 2012-12-21T12:40:37.017 回答
1

我有时想找到我在某个日期创作的提交。为此,我使用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)。

于 2015-09-03T08:00:37.027 回答