首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在文件的特定修订中获取源行号?

问如何在文件的特定修订中获取源行号?
EN

Stack Overflow用户
提问于 2019-01-01 20:45:49
回答 2查看 62关注 0票数 3

使用source/original可以看到git blame行的行号,但它根据对行进行修改的上次提交显示行号

对于文件的特定提交/修订,我也想这样做。

例如,

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

内容:

代码语言:javascript
复制
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" for “3"。Git指责将根据行的提交(abc13)提交来显示此信息。但是,由于xyz11和abc13修订版包含不同的内容,因此xyz11中的实际行号可能有所不同。

那么,如何在文件的特定修订中获得行号呢?

注意:我说的是“源/原始行号”,因为我希望获得正确的行号,即使文档是脏的(有未实现的更改),使用git blame是可能的。

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

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

代码语言:javascript
复制
Line 1
Line 2
Uncommited Line 
Uncommited Line
Line 3

我仍然应该得到"3" for “第3行”而不是"5",否则评论将转到错误的行。正如我说的,使用git blame是可能的,但是它根据行的提交显示了这一信息

谢谢

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-01-01 21:18:45

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

代码语言:javascript
复制
git blame <rev> file

示例

代码语言:javascript
复制
git blame xyz11 file.txt

文档中的更多信息

票数 1
EN

Stack Overflow用户

发布于 2019-01-01 20:59:28

如果我对您的理解是正确的,那么您有一个未提交更改的文件,您的git blame如下所示。

代码语言:javascript
复制
$ 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显示它在原始提交中的行。

代码语言:javascript
复制
$ 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在提交中获得行号。例如。

代码语言:javascript
复制
$ 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
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53998810

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档