我已经看了git-scm.com和gitref.org的相关文档,但我似乎无法弄清楚这一点。
假设我想获取2013年11月12日星期二的所有提交,以一个现有的repo为例,我知道这一天有提交,还有前一天和后一天的提交。
使用2013-11-11
和2013-11-12
以下所有内容给予我提供了11月11日和12日的提交:
git log --after="2013-11-11" --until="2013-11-12"
git log --since="2013-11-11" --until="2013-11-12"
git log --after="2013-11-11" --before="2013-11-12"
git log --since="2013-11-11" --before="2013-11-12"
仅适用于2013-11-12
以下所有代码都没有提交:
git log --since="2013-11-12" --until="2013-11-12"
git log --since="2013-11-12" --before="2013-11-12"
git log --after="2013-11-12" --until="2013-11-12"
git log --after="2013-11-12" --before="2013-11-12"
带有2013-11-12
和2013-11-13
正如预期的那样(根据上面2013-11-11
和2013-11-12
的结果),以下所有内容都给予了11月12日和13日的结果:
git log --since="2013-11-12" --before="2013-11-13"
git log --after="2013-11-12" --before="2013-11-13"
git log --since="2013-11-12" --until="2013-11-13"
git log --after="2013-11-12" --before="2013-11-13"
......等等等等。我觉得我已经尝试了since
、after
、before
和until
的所有可能组合,但仍然找不到答案,也不知道这些选项是包含还是排除,因为如果两个日期不同,它们似乎是包含的,但是如果他们在同一天的话就排他了。我错过了什么/我做错了什么吗?!
5条答案
按热度按时间lnxxn5zx1#
谢谢约翰·巴塞洛缪!
答案是指定时间,例如
git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"
eqzww0vc2#
我通常会检查我的git日志,看看我在某一天做了什么,然后根据这个更新我的时间表,但是用ISO格式输入完整的日期很麻烦,所以我就这样做了
我添加了
--author
来只打印我的提交此打印提交发生在6月9日(在本例中为2016年,而不是2015年或2014年等)。
--since/--after
和--until/--before
参数也可以包含3 days ago
、yesterday
等内容。jhdbpxl93#
公认的答案(我投了反对票)没有错,但是......我们是为了科学而来的!
以下输出可通过
pretty=format:<string>
placeholders进行扩展/自定义:你也可以把整个
git log
解析成JSON
,然后根据自己的喜好来消费/操作它的数据。qoefvg9y4#
我为此专门创建了一个git alias:
用法:
2w2cym1i5#
此脚本显示当前存储库可用的提交日期范围,然后提示您输入要查看提交的开始日期。它显示短SHA和完整SHA、作者、提交时间戳以及用单引号括起来的注解。
脚本会一直提示输入日期,直到您按Enter或Control-D。
Mac用户:需要gnu日期。
我调用了脚本
commitsOnDates
,下面是它的运行情况,我输入的第一个日期没有提交,所以响应只是一个空行: