可以查看带有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行">而不是的"5"3">,否则注释将转到错误的行。正如我所说,git blame
是可能的,但它根据行的提交显示此信息
感谢
如果我理解正确,您有一个包含未提交更改的文件,您的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
有一个选项rev用于git指责,因此,您可以指定要指责的提交/修订:
git blame <rev> file
示例
git blame xyz11 file.txt
文档中的更多信息