git 如何查看某一天的所有提交?

k2arahey  于 2023-02-28  发布在  Git
关注(0)|答案(5)|浏览(152)

我已经看了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"

......等等等等。我觉得我已经尝试了sinceafterbeforeuntil的所有可能组合,但仍然找不到答案,也不知道这些选项是包含还是排除,因为如果两个日期不同,它们似乎是包含的,但是如果他们在同一天的话就排他了。我错过了什么/我做错了什么吗?!

lnxxn5zx

lnxxn5zx1#

谢谢约翰·巴塞洛缪!
答案是指定时间,例如git log --after="2013-11-12 00:00" --before="2013-11-12 23:59"

eqzww0vc

eqzww0vc2#

我通常会检查我的git日志,看看我在某一天做了什么,然后根据这个更新我的时间表,但是用ISO格式输入完整的日期很麻烦,所以我就这样做了

git log --after=jun9 --before=jun10

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

git log --since=jun9 --until=jun10 --author=Robert

此打印提交发生在6月9日(在本例中为2016年,而不是2015年或2014年等)。
--since/--after--until/--before参数也可以包含3 days agoyesterday等内容。

jhdbpxl9

jhdbpxl93#

公认的答案(我投了反对票)没有错,但是......我们是为了科学而来的!
以下输出可通过pretty=format:<string>placeholders进行扩展/自定义:

git log --pretty='format:%H %an %ae %ai' | grep 2013-11-12
  • 不是100%不出错,因为用户可能已经输入了相同的字符串。* 但是可以接受,这取决于使用了哪些占位符。例如,上面的代码片段不会失败。

你也可以把整个git log解析成JSON,然后根据自己的喜好来消费/操作它的数据。

  • 免责声明:* 这是我的项目之一。
qoefvg9y

qoefvg9y4#

我为此专门创建了一个git alias

commitsAtDate = "!f() { git log --decorate --after=\"$1 0:00\" --before=\"$1 23:59\" --author \"`git config user.name`\"; }; f"

用法:

git commitsAtDate 2017-08-18
2w2cym1i

2w2cym1i5#

此脚本显示当前存储库可用的提交日期范围,然后提示您输入要查看提交的开始日期。它显示短SHA和完整SHA、作者、提交时间戳以及用单引号括起来的注解。
脚本会一直提示输入日期,直到您按Enter或Control-D。
Mac用户:需要gnu日期。

#!/bin/bash

COMMITS=`git log --abbrev-commit --pretty="format:%h %H %ai" | sort -k3 -k4`
FIRST=`echo "$COMMITS" | head -n 1`
LAST=`echo "$COMMITS" | tail -n 1`
echo "First commit: $FIRST"
echo "Last commit: $LAST"
printf "Date to search for commits: "
read DATE
while [[ "$DATE" ]]; do
  NEXT_DATE=`date +%Y-%m-%d -d "$DATE +1 day"`
  #echo "Searching for commits from $DATE to $NEXT_DATE"
  echo `git log --after="$DATE" --before="$NEXT_DATE" --pretty="format:%h %H %an %ci '%s'"`
  printf "\nDate to search for commits: "
  read DATE
done

我调用了脚本commitsOnDates,下面是它的运行情况,我输入的第一个日期没有提交,所以响应只是一个空行:

$ commitsOnDates
First commit: 375bcfb 375bcfbbf548134a4e34c36e3f28d87c53b2445f 2015-08-03 13:37:16 -0700
Last commit: 1d4c88c 1d4c88ce6a15efaceda1d653eed3346fcae8f5e6 2018-10-13 21:32:27 -0700
Date to search for commits: 2015-08-13

Date to search for commits: 2015-08-03
375bcfb 375bcfbbf548134a4e34c36e3f28d87c53b2445f Mike Slinn 2015-08-03 13:37:16 -0700 'this is a comment'

Date to search for commits: 2018-10-13
1d4c88c 1d4c88ce6a15efaceda1d653eed3346fcae8f5e6 Mike Slinn 2018-10-13 21:32:27 -0700 'a comment' 64d6e16 64d6e16338657b82c91ac94bea8ebf7b80dc4c28 Mike Slinn 2018-10-13 18:28:41 -0700 'nother comment' d5eb26e d5eb26e49fc9dceee9b9f5a2d8fa052bff2cfbbc Mike Slinn 2018-10-13 18:16:20 -0700 'no comment' d8a4992 d8a4992df208ba5efb50728311820bdad5ba5332 Mike Slinn 2018-10-13 12:02:00 -0700 'commented'

Date to search for commits:

相关问题