Git,如何查找特定月份的提交数量?

5
如何在不使用“before / after”选项的情况下查找指定月份中提交次数?可以使用以下命令:git log --since=2022-03-01 --until=2022-04-01 | grep "^commit" | wc -l。该命令将在2022年3月1日至2022年4月1日之间的所有提交中进行计数,并输出总数。

1
你需要在 git log 后面添加 --oneline,这样 wc 才能正确计算行数。 - Noah May
在 Git log 中,“不使用 before/after”是什么意思? - Trent
使用 git rev-list --count 命令,但请注意这与 git log 实际上是相同的,只是更方便地打包用于自动化。 - torek
@Trent 我想查询特定月份,比如1月份,所以我使用了--after={2020-01-01} --before={2020-01-31},如果有其他方法,请告诉我。 - Orion
2个回答

5

从 Git 日志输出开始,我们可以使用 --since--until 命令行选项指定一个日期范围。

例如,要获取2020年4月的提交记录,可以使用以下命令:

git log --since "APR 1 2020" --until "MAY 1 2020"

我们可以通过计数行来获得提交次数,但必须确保每个提交只打印一行。使用--pretty=oneline git日志格式化程序可以实现这一点。
 git log --pretty=oneline

最后,我们可以将git log的输出从标准输出重定向到shell可执行文件wc,以计算行数。默认情况下,该可执行文件会计算字符数,但可以使用命令行选项-l来配置为计算行数:

wc -l

答案

我们配置git log以打印指定日期范围内的提交,并确保每个提交只打印一行。然后,我们将日志输入到行计数器中并获取结果:

 git log --since "APR 1 2020" --until "MAY 1 2020" --pretty=oneline | wc -l

谢谢!你的答案是正确的!我注意到为了得到整个月,应该一直到下个月的第一天。 - Orion
很好的发现,@Orion!我已经更新了答案,使用你建议的 --unit "MAY 1 2020" - Trent

1

您还可以在--since--until中写入经过的月份数。

git log --since="2 month ago" --until="1 month ago" --pretty=format:'%h,%an,%ar,%s'
  • 当前月份:四月:因此所有提交记录从2020年2月1日到2020年3月31日

或者使用数字日期格式,如下所示:

git log --since="2020-01-01" --until="2020-03-31" --pretty=format:'%h,%an,%ar,%s'
  • 从2020年1月1日到2020年3月31日的提交

解释git命令的几个选项:

  • %h 显示git提交哈希值
  • %an 显示提交作者的名称
  • %ar 显示提交的创建日期
  • %s 显示提交主题(来自提交命令的注释)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接