代码改变世界

git log --after 时间点的小缺陷

2022-06-18 15:00  加个小鸡腿  阅读(1214)  评论(0编辑  收藏  举报

      我们经常会使用git log 加一个时间段来获取某段时间的提交记录,比如获取从2022年6月1号到现在的记录,我们常用的是git log --after="2022-06-01" 或者把after换成since,

我们明确的知道统计是包含日期当天的,也就说说包含6月1号的提交,但是大家想过没,这个时间点是从什么时候开始呢,是从2022年6月1号的0点0分开始算吗?

 

其实不然,最近我正好在统计近期活动分支仓库的代码提交评率,使用shell来统计,首先就要用到git log 接时间点的命令,就比如上面说到的2022年6月1号到现在的提交记录有几条,我用的最多的也是git log --after="2022-06-01"来统计,但是我总是会发现偶尔某些代码仓的分支会统计少了,因为我们使用了gerrit,所以可以直接了当的看出时间范围内有多少条提交。

 使用命令:git log --after="2022-06-01" --oneline  |wc -l   统计到test仓库2022.6.1之后的提交数得到的结果是12

但是我在gerrit上看到这个仓库2022.6.1号后不是12条,是14条,如下:

对比发现,是‘Jun 1’那两条没统计到,为什么使用命令git log --after="2022-06-01" --oneline  |wc -l 统计不到呢,他们也是6月1号的数据啊?

难道不是从0点0分0秒开始算的吗?

然后我尝试将命名加上时分秒,修改为git log --after="2022-06-01 00:00:00” --oneline  |wc -l 得到的结果竟然对了,是14,和gerrit上显示的一样。

然后点开‘Jun 1’的两条数据,倒数第一条的时间是2022.6.1 10:33AM,倒数第二条数据时间是2022.6.1 1:53PM,当前执行统计命令git log --after="2022-06-01" --oneline  |wc -l的时间是2022.6.18 2:37PM ,所以我认为应该是按照当前时间2:37PM来倒退到其实时间的时间点,也就是说只能统计到2022.6.1 2:37PM之后到当前时间2022.6.18 2:37PM的数据?

为了证实我的猜想,我们可以看到截图中6月2号也有两条数据,其中下面一条的时间是2022.6.2 10:20AM 上面一条数据时2022.6.2 3:28PM,那我就统计2号到当前时间2022.6.18 2:37PM的,执行git log --after="2022-06-02" --oneline  |wc -l ,得到的结果是11,但是分明gerrit上显示的是12条数据,当我换成git log --after="2022-06-02 00:00:00” --oneline  |wc -l 时我得到的数据是12,证实了我的猜想。

 

总结:

  如果想得到时间段的提交记录,不仅需要使用年月日,还需要添加具体的起始时间,比如git log --after="2022-06-01 00:00:00” --oneline  

  同理,如果要指定确定的截止时间,也要在截止日期后面加上截止时间,比如:git log --since="2022-06-01 00:00:00”   untile="2022-06-11 23:59:59" --oneline 

另外git log 也可以使用相对时间哟,比如 “18days” "two weeks" "yesterday"