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



Git 给出了 since 选项

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

有没有办法让我在两个日期之间获得责备列表?
也就是说:类似于git log --since--until的东西.

类似于 git log 自和直到

这在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"没有任何意义(问:"我们想知道c5中的myfile吗?还是myfilec6

相关内容

  • 没有找到相关文章

最新更新