如何查看特定日期的所有提交?

3ch*_*eel 166 git git-log

我已经查看了git-scm.comgitref.org的相关文档,但我似乎无法弄清楚这一点.

假设我希望获得2013年11月12日星期二的所有提交.以现有的repo为例,我知道我当天有提交,以及前一天和后一天的提交.

随着2013-11-112013-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-122013-11-13

正如预期的那样(从结果2013-11-112013-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,beforeuntil,但仍无法找到答案,我也不知道这些选项是否包含或排除,因为他们似乎如果这两个日期都不同的是包容性的,但如果他们在同一天,他们是独家的.我错过了什么/我做错了什么?!

3ch*_*eel 202

谢谢John Bartholomew!

答案是指定时间,例如 git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"

  • 尼斯.但是,该命令将在第二天23:59到00:00之间省略提交,因此`git log --after ="2013-11-12 00:00"--before ="2013-11-13 00:00 "`更好.我相信`gitk --since ="2013-11-12 00:00"--until ="2013-11-13 00:00"&`如果你安装了gitk也会工作. (10认同)
  • 在git 2.13.0中.`git log --after ="2017-07-25"--before ="2017-07-26"`为我提供了有效的结果. (6认同)
  • 这是当前签出的分支吗?如何查看所有分支? (2认同)

Koh*_*ert 27

我通常检查我的git日志,看看我在特定日期工作的情况,并根据它更新我的时间表,但是输入ISO格式的完整日期是很麻烦所以我就这样做

git log --after=jun9 --before=jun10
Run Code Online (Sandbox Code Playgroud)

我添加--author只打印我的提交

git log --since=jun9 --until=jun10 --author=Robert 
Run Code Online (Sandbox Code Playgroud)

这打印了6月9日发生的提交(在这种情况下2016年,而不是2015年或2014年等).

--since/--after--until/--before参数也可以采取这样的东西3 days ago,yesterday等等.

  • 我不得不使用空格:`git log --after ="may 2"--before ="may 3"` (4认同)

Wal*_*rée 12

接受的答案(我赞成)没有错,但是......我们来这里是为了科学!

下面的输出可以使用pretty=format:<string> 占位符进行扩展/自定义:

git log --pretty='format:%H %an %ae %ai' | grep 2013-11-12
Run Code Online (Sandbox Code Playgroud)

由于用户输入了相同的字符串,因此不会100%免于错误.但可接受取决于使用哪个占位符.例如,上面的代码段不会失败.

有人可能会以及全解析只是git logJSON和消费/它的数据操纵一个人的心脏的内容.检查https://github.com/dreamyguy/gitlogg,永远不要回头!

免责声明:这是我的一个项目.


Mic*_*oße 8

我为这个特定的目的做了一个别名:

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"
Run Code Online (Sandbox Code Playgroud)

用法:

git commitsAtDate 2017-08-18
Run Code Online (Sandbox Code Playgroud)

  • 您还可以指定此别名的相对日期,即“git commitsAtDate 昨天”、“2 天前”等。 (2认同)