如何查看特定date的所有提交?
我已经从git-scm.com和gitref.org看过相关的文档,但我似乎无法弄清楚这一点。
假设我想要在2013年11月12日星期二提交所有提交。使用现有的回购作为示例,我知道有一个事实,那就是我当天已经提交,并且在前一天和后一天提交。
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
和after
,我尝试了所有可能的组合,但是仍然无法find答案,也不了解这些选项是包含性的还是排他性的,因为如果两个date是不同的,但如果他们在同一天独家。 我错过了什么/我做错了什么?
感谢John Bartholomew!
答案是指定时间,例如git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"
我通常检查我的git日志,看看我在一个特定的日子里工作,并更新我的时间表的基础上,但它是一个痛苦的屁股inputISO格式的完整date,所以我只是这样做
git log --after=jun9 --before=jun10
我添加 – 作者只打印我的提交
git log --since=jun9 --until=jun10 --author=Robert
这将打印在6月9日发生的提交(所以2016年在这种情况下,而不是2015年或2014年等)。
参数--since/--after
的--since/--after
和--until/--before
也可以采用像3 days ago
, yesterday
等等的东西。
被接受的答案(我提出)没有错,但是…我们在这里是为了科学!
下面的输出可以使用pretty=format:<string>
扩展/定制pretty=format:<string>
占位符 :
git log --pretty='format:%H %an %ae %ai' | grep 2013-11-12
由于用户可能input了相同的string,因此不能100%地避免错误。 但可以接受取决于使用哪个占位符。 上面的代码片段不会失败,例如。
人们也可以将整个git log
parsing为JSON
并将其数据消费/操作为自己的心脏内容。 检查https://github.com/dreamyguy/gitlogg出去,永不回头!;
免责声明:这是我的项目之一。
我为这个具体目的做了一个别名:
commitsAtDate = "!f() { git log --pretty='format:%C(yellow)%h %G? %ad%Cred%d %Creset%s%C(cyan) [%cn]' --decorate --after=\"$1 0:00\" --before=\"$1 23:59\" --author \"`git config user.name`\"; }; f"
用法:
git commitsAtDate 2017-08-18