如何获取文件特定版本中的源行号?

时间:2019-01-01 20:45:49

标签: git git-blame

有可能看到带有git blame的行的 source / original 行号,但是它根据最后一次提交的行号显示了行号修改

我想对文件的特定提交/修订执行相同的操作。

示例

文件:file.ext xyz11 是我们当前正在审核的文件的修订/提交)

内容:

Line 1 (**abc11** is the last commit changed this line)
Line 2 (**abc12** is the last commit changed this line)
Line 3 (**abc13** is the last commit changed this line)

我想获得“第3行” “ 3” 。 Git会根据行的提交(abc13)提交来显示此信息。但是,由于 xyz11 abc13 修订版包含不同的内容,因此 xyz11 中的实际行号可能会有所不同。

那么我如何获得文件特定版本中的行号?

注意:我说“源/原始行号” ,因为即使文档很脏(有未提交的更改),我也想获取正确的行号,可以使用git blame

我的情况是,我将在API请求中使用这些行号添加行内注释

所以,假设我已经修改了file.ext

Line 1
Line 2
Uncommited Line 
Uncommited Line
Line 3

对于“第3行” ,我应该仍然保持“ 3” ,而不是“ 5” ,否则注释将进入错误的行。正如我说的,git blame可能实现,但它会根据该行的提交显示此信息

谢谢

2 个答案:

答案 0 :(得分:3)

如果我对您的理解正确,则说明您的文件中包含未提交的更改,并且您的 $('.sendRMA').on("click", function () { $(this).parents('tr').next().toggle("slow"); }); 如下所示。

git blame

使用$ git blame foo ^592c0a1 (Michael G. Schwern 2019-01-01 12:56:35 -0800 1) Line 1 ^592c0a1 (Michael G. Schwern 2019-01-01 12:56:35 -0800 2) Line 2 00000000 (Not Committed Yet 2019-01-01 12:58:04 -0800 3) Uncommitted Line 00000000 (Not Committed Yet 2019-01-01 12:58:04 -0800 4) Uncommitted Line ^592c0a1 (Michael G. Schwern 2019-01-01 12:56:35 -0800 5) Line 3 显示原始提交中的哪一行。

-n

要忽略所有未提交和未暂存的更改,请使用$ git blame -n foo ^592c0a1 1 (Michael G. Schwern 2019-01-01 12:56:35 -0800 1) Line 1 ^592c0a1 2 (Michael G. Schwern 2019-01-01 12:56:35 -0800 2) Line 2 00000000 3 (Not Committed Yet 2019-01-01 12:58:47 -0800 3) Uncommitted Line 00000000 4 (Not Committed Yet 2019-01-01 12:58:47 -0800 4) Uncommitted Line ^592c0a1 3 (Michael G. Schwern 2019-01-01 12:56:35 -0800 5) Line 3 git blame <file> HEAD是最后一次提交。这将从HEAD向后查找文件的所有更改。由于介入式提交也会使行号掉线,因此您仍然希望HEAD获得该提交中的行号。例如。

-n

答案 1 :(得分:1)

git blame 有一个 rev 选项,因此,您可以指定要归咎的提交/修订:

git blame <rev> file

示例

git blame xyz11 file.txt

docs

中的更多信息