Git给出了since选项
git blame --since=3.weeks -- foo
有没有办法在两个日期之间获得责任清单?
即:类似于git log --since
and的东西--until
。
类似于 git log since 和 until
首先,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
在上面的拓扑中说“”;遍历 fromc9
down toc5
andc6
只是为了找到c5
并c6
开始“真正的”遍历 from。现在,“
--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
inc5
吗?还是myfile
inc6
?”)。