Git提供自选项
git blame --since=3.weeks -- foo
有没有办法可以得到两个日期之间的责任清单?
那就是:类似于git log --since
和--until
的东西。
答案 0 :(得分:1)
从那时起直到直到类似于git log
首先,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
”开始,遵循父母的链条,将产生c9
,c8
,c7
,c6
,...,c1
,....如果添加“
--after 2
”,即“git rev-list --after 2 c9
”执行与上述完全相同的遍历,但是会停止遵循父级链进行早于指定时间的提交如果添加“
--before 6
”,即“git rev-list --before 6 c9
”的遍历与第一个遍历完全相同,但是不会显示时间戳晚于指定时间的提交。
就像在上面的拓扑中说“git rev-list c5 c6
”一样;从c9
到c5
和c6
的遍历只是为了找到c5
和c6
从其开始“真实”遍历。现在,“
--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
?”)。