Git blame命令获取两个日期之间的列表

时间:2018-07-21 16:33:21

标签: git git-blame

Git提供自选项

git blame --since=3.weeks -- foo

有没有办法可以得到两个日期之间的责任清单?
那就是:类似于git log --since--until的东西。

1 个答案:

答案 0 :(得分:1)

  

从那时起直到直到类似于git log

那个was discussed here in 2017

首先,git blame接受提供给git rev-list的选项,以限制 犯了责备。

git rev-list确实具有:

-until=<date>
--before=<date>
  

显示早于特定日期的提交。

因此,这些选项不在git blame下记录,而是在git rev-list下记录。

但是:所说的选项被git blame 忽略

也就是说,git blame --since=3.weeks --before=2.weeks -- foo不会“出错”,但是...会默默地忽略--before=2.weeks部分。


Junio C Hamano评论(谈到提交,但这也适用于日期):

  

rev-list会解析许多选项,但blame会将其忽略,仅因为它们在命令上下文中没有多大意义,并且“ --before”是其中之一他们。

     

有趣的是,意识到“ --since(及其同义词“ --after”)确实有意义,这与“ --before”(及其同义词“ --until”不同”)。

     

让我们想象这样的历史(时间从左到右):

--c1--c2--c4--c6--c8--c9
        \         /
         c3--c5--c7
     

历史记录的最尖端是提交“ c9”,其中的数字   每次提交的名称均表示其时间戳。

     
      
  • git rev-list c9”从“ c9”开始,遵循父母的链条,将产生c9c8c7c6,...,c1,....

  •   
  • 如果添加“ --after 2”,即“ git rev-list --after 2 c9”执行与上述完全相同的遍历,但是会停止遵循父级链进行早于指定时间的提交

  •   
  • 如果添加“ --before 6”,即“ git rev-list --before 6 c9”的遍历与第一个遍历完全相同,但是不会显示时间戳晚于指定时间的提交。
      就像在上面的拓扑中说“ git rev-list c5 c6”一样;从c9c5c6的遍历只是为了找到c5c6从其开始“真实”遍历。

  •   
     

现在,“ --after 2”仍将显示“ c9”,这是您开始遍历的技巧,这对于“ blame”而言很重要。

     

与“ git rev-list”(和“ git log”系列命令)不同,可以采用历史上多个积极的终点(例如,在上面的示例拓扑中询问“ git log -p ^c1 c5 c6 -- myfile”),必须给git blame”正好是一个正端点,因为“ git blame ^c1 c5 c6 -- myfile”不会 有任何意义(问:“我们想了解myfile中的c5吗?还是myfile中的c6?”)。