【问题标题】:How to link to specific line number on github如何链接到github上的特定行号
【发布时间】:2022-05-20 02:56:36
【问题描述】:

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

谁能告诉我怎么做?

【问题讨论】:

    标签: git github


    【解决方案1】:

    不要只链接到行号!一定要使用canonical 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 将变为如下所示:

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

    该链接包含该特定提交的实际 SHA 哈希,而不是 master 上文件的当前版本。这意味着该链接将永远有效,并且不会指向该文件可能包含的任何未来版本的第 18-20 行。

    现在沐浴在您的新永久链接的光芒中。 ;-)

    2017 年 9 月 29 日更新: 正如@watashiSHUN 所指出的,github 现在通过在您选择一个或更多行。也请查看@watashiSHUN's answer

    2016 年 3 月 25 日更新: 举个例子——在上面的例子中,我提到了 URL 中的“README”文件。编写此答案时,这些非规范网址实际上有效。但现在这些网址不再有效,因为README 已移至README.md。但正如预期的那样,带有 SHA 哈希的规范 URL 仍然有效。

    2022 年 4 月 17 日更新:有些文件像 Markdown 文件一样是“可渲染的”。 Github 要求 ?plain=1 显示它们的内容而不是渲染。

    【讨论】:

    • y 键对我没有任何作用。这已经改变了吗?从 Google Chrome 开发频道尝试。
    • 它仍然有效...文档仍然说也要使用y 键...help.github.com/articles/getting-permanent-links-to-files
    • shift+点击第二行的块是个好方法!我正在手动编辑 URL 以添加第二行:)。后续问题,如果我想要突出显示第 2、4 和 17-22 行怎么办?这是可能的还是我一次只能突出显示一个块?
    • @tr3buchet 我刚刚 ping 了 github 支持——目前不可能。他们说他们会考虑这个功能,但没有承诺。我提出格式类似于L18-L20,L29,并且一个人可以CTRL-单击添加非连续行。我认为您的想法是一个很好的建议,并且非常有用。
    • 如果READMEREADME.md 怎么办?
    【解决方案2】:

    @broc.seib has a sophisticated answer, 我只想指出,github 现在有一个非常简单的 UI 可以帮助您实现它,而不是按 y 来获取永久链接

    1. 通过点击行号选择行或通过按住shift选择多行(与在文件资源管理器中选择多个文件夹的方式相同)

    2. 在您选择的第一行的右上角,展开 ... 并单击 copy permalink

    3. 就是这样,带有选定行和提交哈希的链接将复制到剪贴板https://github.com/python/cpython/blob/c82b7f332aff606af6c9c163da75f1e86514125e/Doc/Makefile#L1-L4

    【讨论】:

      【解决方案3】:

      您可以使用永久链接在问题、PR 等中包含代码 sn-ps。

      参考资料:

      https://help.github.com/en/articles/creating-a-permanent-link-to-a-code-snippet

      【讨论】:

      • 漂亮的 gif!
      • 抱歉跑题了,但是你用什么工具来做呢?
      • @GiovanniBenussi 来自 GitHub。查看链接。
      • 我的意思是 gif :-P 哈哈哈
      • @GiovanniBenussi 我不知道 reversiblean 使用了什么,但偶尔我会使用一个名为“screentogif”的好工具制作这样的 gif,你应该试试github.com/NickeManarin/ScreenToGif
      【解决方案4】:

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

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

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

      【讨论】:

      • 不要忘记,如果文件发生变化,这个 URL 仍然会指向第 3 行,其中可能包含新代码,并且可能不是您想要的!我提供了另一种产生永久链接的解决方案。提示:只需按y。 ;-)
      • 链接失效
      【解决方案5】:

      许多编辑器(也请参阅下面的命令部分)支持链接到 GitHub 或 BitBucket(或其他)上文件的行号或范围。这是一个简短的列表:

      原子

      Open on GitHub

      Emacs

      git-link

      崇高的文字

      GitLink

      Vim

      gitlink-vim


      命令

      • git-link - Git 子命令,用于获取指向 git 对象的 repo-browser 链接
      • ghwd - 打开与你的 shell 当前分支和工作目录匹配的 github URL

      【讨论】:

        【解决方案6】:

        与如何将GitHub存储库的README.md链接到特定行号的代码有关

        你有三种情况:

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

          但链接将始终链接 到旧文件版本,其中不包含新的更新 以主分支为例。示例:

          https://github.com/username/projectname/blob/b8d94367354011a0470f1b73c8f135f095e28dd4/file.txt#L10
          
        2. 我们可以像(master-branch)一样链接到(自定义branch)。 但该链接将始终链接到包含新文件的最新文件版本 更新。由于新的更新,该链接可能指向无效的业务线编号。 示例:

          https://github.com/username/projectname/blob/master/file.txt#L10
          
        3. GitHub 不能自动链接到任何文件(自定义 提交)也不(主分支) 由于以下业务问题:

          • 业务含义,在新文件中链接到它
          • 目标突出显示代码的长度可以更改

        【讨论】:

        • 有人指出这一点很好。希望很容易找到折衷方案,例如绑定到当前在新版本中的线路和前向跟踪。或者至少有指向需要某个子字符串的地方的链接。
        【解决方案7】:

        链接到 GitHub wiki 上的行号

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

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

        【讨论】:

          【解决方案8】:

          如果你想获得一个ma​​rkdown code sn-p的预览渲染,在复制the other answer中提到的链接后,从链接中删除?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 Docs: Creating a permanent link to a code snippet 了解更多信息。

          【讨论】:

            【解决方案9】:

            对于拉取请求中的一行。

            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 R。即如果 PR 添加一行,您必须使用 R。如果它删除了一行,你必须使用L

            发件人:Generate line pointer URL into Github Pull Request

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2015-03-05
              • 2015-09-29
              • 2013-01-01
              • 2021-01-28
              • 2020-02-27
              • 1970-01-01
              • 1970-01-01
              • 2015-05-25
              相关资源
              最近更新 更多