git blame 使用 -L <n,m> 选项抛出错误的修订错误



其中一个git blame选项处理行范围。手册说:

-L 仅处理行范围 n,m,从 1 开始计数

现在,我有一个超过 100 行的文件。当我运行git blame -L 5,15 myFile.txt时,git 抱怨:

致命:错误修订版"15">

有趣的是,当我运行 git 时git blame -L 5 myFile.txt不会抱怨。

这是怎么回事?

如果你引用这些行,它将起作用

git blame -L '10,200' composer.json

在这种情况下,您的命令看起来是正确的。

我已经用我的 composer.json 文件检查了这个问题,它运行良好。当我尝试访问比文件内部更多的行时,我收到错误"file composer.json 只有 87 行"。

仅当第二个值之前有一个空格时,才会收到此错误。

git blame -L 10, 200 composer.json 
fatal: bad revision '200'

所以我认为这就是问题所在。

请注意,PowerShell 和/或 Posh-Git 可能会在逗号后注入空格。尝试使用命令提示符。

注意:在 git 2.19(2018 年第 3 季度(中,-L[<N>][,[<M>]]参数"git blame "和"git log"的解析已经调整。

这应该避免某些fatal: bad revision '15'的情况,特别是当文件少于 15 行时:

请参阅提交 7f81c00,提交 96cfa94 (2018 年 6 月 15 日(,作者:Isabella Stephens (''(。
(由Junio C Hamano -- gitster -- 在提交6566a91中合并,2018年8月2日(

blame:如果范围结束超过文件末尾,则防止错误

如果使用 -L 选项指定 git blame 中的线范围,则 范围的末尾超过文件的末尾,git 将失败并致命 错误。 此提交可防止此类行为 - 相反,我们显示责备 对于指定范围内的现有行

此提交还修复了两个极端情况。

  • 现在,责备-L n,-(n+1)归咎于文件的前 n,而不是从文件的n到末尾
  • 责备-L ,-n将被视为-L 1,-n责备第一行 文件,而不是责怪整个文件

相关内容

最新更新