3

可以看到行的源/原始行号,git blame但它根据在行中进行修改的最后一次提交显示行号

我想对文件的特定提交/修订做同样的事情。

例子,

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

内容:

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)

我想为"Line 3"获得" 3" 。Git blame 将根据该行的提交 (abc13)提交显示此信息。但是,由于xyz11abc13版本包含不同的内容,因此xyz11中的实际行号可能不同。

那么如何在文件的特定版本中获取行号呢?

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

我的场景是,我将在 API 请求中使用这些行号来添加内联注释

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

Line 1
Line 2
Uncommited Line 
Uncommited Line
Line 3

我应该仍然为"Line 3"而不是"5" 得到 "3" 否则评论将转到错误的行。正如我所说,它可能是,但它根据行的提交显示此信息git blame

谢谢

4

2 回答 2

3

如果我理解正确,您有一个包含未提交更改的文件,并且您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获得该提交中的行号。例如。

$ 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 13:03:06 -0800 3) Uncommitted line
4a87d48f 3 (Michael G. Schwern 2019-01-01 13:02:32 -0800 4) Line 2.5
^592c0a1 3 (Michael G. Schwern 2019-01-01 12:56:35 -0800 5) Line 3

$ git blame -n foo HEAD

^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
4a87d48f 3 (Michael G. Schwern 2019-01-01 13:02:32 -0800 3) Line 2.5
^592c0a1 3 (Michael G. Schwern 2019-01-01 12:56:35 -0800 4) Line 3
于 2019-01-01T20:59:28.283 回答
1

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

git blame <rev> file

例子

git blame xyz11 file.txt

文档中的更多信息

于 2019-01-01T21:18:45.147 回答