我知道我可以链接到GitHub存储库上文件的特定行号(我相信我以前见过这个)…

我该怎么做呢?


当前回答

See:

您可以使用永久链接在问题、pr等中包含代码片段。

引用:

创建到代码段的永久链接

其他回答

单击行号,然后从地址栏复制并粘贴链接。若要选择一个范围,请单击该数字,然后单击后面的数字。

或者,链接是一种相对简单的格式,只需将#L<number>附加到特定行号的末尾,使用到文件的链接。这是git仓库README的第三行链接:

https://github.com/git/git/blob/master/README#L3

不要只是链接到行号!一定要使用规范的URL。否则,当该文件更新时,URL将指向错误的行!

如何让一个永久的链接到正确的行:

单击您想要的行号(如第18行),浏览器中的URL将在末尾添加#L18。你直接点击左边的18,而不是代码行。看起来是这样的:

现在你的浏览器URL看起来是这样的:

https://github.com/git/git/blob/master/README.md?plain=1#L18

如果您想选择多行,只需按住Shift键并单击第二个行号,如第20行。看起来是这样的:

现在你的浏览器URL看起来是这样的:

https://github.com/git/git/blob/master/README.md?plain=1#L18-L20

这是最重要的部分:

现在,通过按Y键获得该特定提交的规范URL。浏览器中的URL会变成这样:

https://github.com/git/git/blob/5bdb7a78adf2a2656a1915e6fa656aecb45c1fc3/README#L18-L20

该链接包含特定提交的实际SHA-1散列,而不是主文件的当前版本。这意味着该链接将永远工作,而不指向该文件未来版本可能包含的任何内容的第18-20行。

现在沐浴在新的永久链接的光辉中吧。: -)

正如watashiSHUN所指出的,GitHub现在通过提供一个…选择一行或多行后,在左侧显示。请看watashiSHUN的回答。

举例来说——在上面的例子中,我在URL中引用了“README”文件。在编写这个答案时,那些非规范的url实际上是有效的。但是自从README被移到README.md后,这些url就再也不起作用了。但是带有SHA-1散列的规范URL仍然可以工作,正如预期的那样。

有些文件是“可渲染的”,比如Markdown文件。GitHub要求?plain=1来显示它们的内容,而不是渲染。

如果您想要获得Markdown代码片段的预览呈现,在复制另一个答案中提到的链接之后,从链接中删除?plain=1参数。

例如,下面将显示一个纯文本链接:

github.com/<organization>/<repository>/blob/<branch_name>/README.md?plain=1#L14

在移除?plain=1参数后,它将显示代码的预览:

github.com/<organization>/<repository>/blob/<branch_name>/README.md#L14

更多信息请参见GitHub文档:创建到代码片段的永久链接。

许多编辑器(但也参见下面的命令部分)支持链接到GitHub或Bitbucket(或其他)上的文件行号或范围。以下是一个简短的清单:

Atom

在GitHub上打开

Emacs

吉特链接

崇高的文本

GitLink

Vim

gitlink-vim


命令

Git -link - Git子命令,用于获取到Git对象的存储库浏览器链接 ghwd -打开与shell当前分支和工作目录匹配的GitHub URL

用于拉取请求中的一行。

https://github.com/foo/bar/pull/90/files#diff-ce6bf647d5a531e54ef0502c7fe799deR27
https://github.com/foo/bar/pull/
90 <- PR number
/files#diff-
ce6bf647d5a531e54ef0502c7fe799de <- MD5 has of file name from repo root
R <- Which side of the diff to reference (merge-base or head). Can be L or R.
27 <- Line number

只要L和R是正确的,就会得到一条直线。我不确定是否有方法访问L或r,即如果PR增加了一行,你必须使用r。如果它删除了一行,你必须使用L。

从:生成行指针URL到Github拉请求