我有这样的提交
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
选项,但它实际上会过滤提交日期。
这意味着我只能通过
获得提交git log --since='2012-12-01' --until='2012-12-10'
如果我想通过start_date'2012-09-01'和end_date'2012-09-10'
获取提交过滤器任何提示?
答案 0 :(得分:13)
git log --format=format:"%ai %aE %s"
然后按AuthorName和/或日期grep!
答案 1 :(得分:8)
我担心你需要做一些脚本:
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
无法保证正常工作,因为这些提交可能位于不同的分支中。
让我们解释一下我做了什么:
--format="%ad %H"
- 将日志格式设为author_date commit_hash
行--date=iso
- YY-mm-dd HH:MM:SS
格式的日期sort
- Unix命令按字母顺序对行进行排序;它适合以ISO格式对日期进行排序ruby -ane
- 执行ruby脚本。 -n表示为每一行执行,-a拆分这些行并将字段放入$F
数组,-e precises脚本执行("2011-02-23".."2011-02-26").cover?(date)
- 从两个字符串创建范围并检查日期是否适合包含(按字母顺序排列,我们没有解析这些日期)我不知道下一步该怎么做(为了给你更好的日志),但很高兴让你到这一步。
答案 2 :(得分: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
页面的PRETTY FORMATS部分)。