Answers:
不要只链接到行号!确保也使用规范的URL。否则,当该文件更新时,您将拥有一个指向错误行的URL!
如何建立到正确行的永久链接:
单击所需的行号(如第18行),浏览器中的URL就会显示#L18
在末尾。您从字面上单击18
左侧的,而不是代码行。看起来像这样:
现在,您的浏览器的URL如下所示:
https://github.com/git/git/blob/master/README#L18
如果要选择多行,只需按住Shift键并单击第二行号,如第20行。看起来像这样:
现在,您的浏览器的URL如下所示:
https://github.com/git/git/blob/master/README#L18-L20
这是重要的部分:
现在,通过按键获取该特定提交的规范网址y
。您的浏览器中的URL将变为如下所示:
https://github.com/git/git/blob/5bdb7a78adf2a2656a1915e6fa656aecb45c1fc3/README#L18-L20
该链接包含该特定提交的实际SHA哈希,而不是上文件的当前版本master
。这意味着该链接将永远有效,并且不会指向该文件的将来版本可能包含的第18-20行。
现在,沉浸在新的永久链接的光芒中。;-)
2017年9月29日更新:正如@watashiSHUN指出的那样,通过...
在选择一个或多个行之后在左侧提供一个菜单,github现在变得更容易获得永久链接。请也支持@watashiSHUN的答案。
2016年3月25日更新:恰当的例子—在上面的示例中,我引用了URL中的“ README”文件。编写此答案时,那些非规范的URL实际上起作用。但是现在这些网址自README
移至后不再起作用README.md
。但是,具有SHA哈希的规范URL仍然可以正常工作。
y
密钥... help.github.com/articles/getting-permanent-links-to-files
L18-L20,L29
,并且一个人可以CTRL
单击以添加不连续的行。我认为您的想法是一个很好的建议,将非常有用。
README
是README.md
什么呢?
@ broc.seib有一个复杂的答案,我只是想指出y
,github现在没有按动获得永久链接,而是有一个非常简单的UI来帮助您实现它。
单击行号,然后从地址栏中复制并粘贴链接。要选择范围,请单击数字,然后按住Shift键单击更高的数字。
另外,链接是相对简单的格式,只需#L<number>
使用指向文件的链接,将其附加到该特定行号的末尾即可。这是git
存储库第三行的链接README
:
y
。;-)
您可以使用永久链接在问题,PR等中包含代码段。
参考文献:
https://help.github.com/en/articles/creating-a-permanent-link-to-a-code-snippet
许多编辑器(另请参见下面的“ 命令”部分)支持链接到GitHub或BitBucket(或其他)上文件的行号或范围。这是一个简短的清单:
与如何链接到README.md
GitHub存储库到特定行号的代码有关
您有以下三种情况:
我们可以链接到(自定义提交)
但是Link总是会链接到旧文件版本,例如,该文件不会在master分支中包含新更新。例:
https://github.com/username/projectname/blob/b8d94367354011a0470f1b73c8f135f095e28dd4/file.txt#L10
我们可以链接到(自定义分支),如(主分支)。但是该链接将始终链接到将包含新更新的最新文件版本。由于新的更新,该链接可能指向无效的业务行号。例:
https://github.com/username/projectname/blob/master/file.txt#L10
由于以下业务问题,GitHub不能自动链接到(自定义提交)或(主分支)的任何文件:
对于拉取请求中的一行。
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 OR RIe的方法。如果PR添加了您必须使用的线路R
。如果删除一行,则必须使用L
。