如何在GitHub上链接到特定的行号

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

我该怎么做呢?

209568 次浏览

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

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

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

带高亮线和修改地址线的截图

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

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

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

line 18 selected

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

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

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

Enter image description here

现在你的浏览器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散列,而不是master上文件的当前版本。这意味着该链接将永远工作,而不指向该文件未来版本可能包含的任何内容的第18-20行。

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

正如watashiSHUN所指出的,GitHub现在通过在左侧提供...菜单,在你选择一个或多个行后,更容易获得永久链接。请参见watashiSHUN的回答

GitHub永久链接菜单

举个例子——在上面的例子中,我提到了“README"URL中的文件。在编写这个答案时,那些非规范的url实际上是有效的。但现在这些url不再工作,因为README被移动到README.md。但是带有SHA-1散列的规范URL仍然可以工作,正如预期的那样。

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

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

原子

在GitHub上打开

Emacs

git-link

Sublime Text .

GitLink

Vim

gitlink-vim


命令

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

< em >气息。Seib 有一个复杂的答案,但我只是想指出,而不是按Y获得永久链接,GitHub现在有一个非常简单的UI,帮助你实现它。

  1. 通过单击行号选择一行或通过按下转变选择多行(与在文件资源管理器中选择多个文件夹相同):

    Enter image description here

  2. 在你选择的第一行的右上角,展开...并单击复制永久链接

    Enter image description here

  3. < p >就是这样。一个包含选定行和提交散列的链接被复制到你的剪贴板:

    https://github.com/python/cpython/blob/c82b7f332aff606af6c9c163da75f1e86514125e/Doc/Makefile#L1-L4

看到的:

一个永久链接到一个代码片段被粘贴到一个拉请求评论字段

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

引用:

创建一个到代码段的永久链接 .

与如何将GitHub存储库的README.md文件链接到特定行数的代码相关

有三种情况:

  1. 我们可以链接到(自定义提交)

    但是链接总是链接 的旧文件版本,该版本的将包含新的更新 例如主分支。例子:< / p >
    https://github.com/username/projectname/blob/b8d94367354011a0470f1b73c8f135f095e28dd4/file.txt#L10
    
  2. 我们可以像(master-branch)一样链接到(自定义分支)。 但是该链接将总是链接到最新的文件版本,其中将包含new 更新。由于新的更新,链接可能指向无效的业务行号。 例子:< / p >
    https://github.com/username/projectname/blob/master/file.txt#L10
    
    GitHub可以创建一个__abc1 -链接到任何文件(自定义) 提交)或(主分支)。 因为以下业务问题:

    • < >强线< / >强业务含义,将其链接到新文件中
    • 目标高亮代码长度,可以改变

用于拉取请求中的一行。

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拉请求

链接到GitHub维基页面上的行号

我在寻找如何链接到GitHub维基页面上的特定位置时遇到了一些麻烦,最终找到了这个。这可能是常识,但我不知道这个,其他人可能会发现它有用。

浏览wiki文件时,您可以将鼠标放在特定的标题文本上,链接图标就会出现。单击此链接图标,您的浏览器导航URL将被更新(例如:https://github.com/user/repository/wiki/Test#title-1)。这将是到wiki文件中特定位置的链接。

Enter image description here

如果你想获得降价代码片段的预览呈现,在复制了另一个答案中提到的链接后,从链接中删除?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

一个链接到一个Markdown预览

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