Markdown文件中的GitHub相对链接

GitHub relative link in Markdown file

有没有办法创建一个URL锚点,,从Markdown文件中链接到同一存储库和分支中的另一个文件(也就是相对于当前分支的链接)?

例如,在master分支中我有一个README.md文件,我想做的事情如下:

1
2
3
4
5
# My Project
is really really cool. My Project has a subdir named myLib, see below.

## myLib documentation
see documentation [here](myLib/README.md)

这将允许我在同一分支内从一个.md链接到另一个。并且不必担心我所在的分支(避免必须执行包含github.com分支名称的绝对URL)。

这是我的意思的一个工作示例:

  • GOTO http://github.com/rynop/testRel,链接不起作用。
  • GOTO http://github.com/rynop/testRel/blob/master/README.md,链接有效。
  • 这是预期的,因为此时起始URL位于分支中。现在我如何让它在存储库根目录下的README.md中获取当前分支?

    更新:我针对此功能请求针对GitHub打开了一个问题。


    2013年1月30日更新,16个月后:

    GitHub Blog Post标记文件中的相对链接:

    Starting today, GitHub supports relative links in markup files.
    Now you can link directly between different documentation files, whether you view the documentation on GitHub itself, or locally, using a different markup renderer.

    You want examples of link definitions and how they work? Here's some Markdown for you.
    Instead of an absolute link:

    1
    [a link](https://github.com/user/repo/blob/branch/other_file.md)

    …you can use a relative link:

    1
    [a relative link](other_file.md)

    and we'll make sure it gets linked to user/repo/blob/branch/other_file.md.

    If you were using a workaround like [a workaround link](repo/blob/master/other_file.md), you'll have to update your documentation to use the new syntax.

    This also means your documentation can now easily stand on its own, without always pointing to GitHub.

    2011年12月20日更新:

    GowHub标记问题84目前由technoweenie关闭,评论如下:

    We tried adding a tag for this, but it causes problems with other relative links on the site.

    2011年10月12日:

    如果你查看Markdown本身的README.md的原始来源(!),似乎不支持相对路径。
    您会找到如下参考:

    1
    2
    [r2h]: http://github.com/github/markup/tree/master/lib/github/commands/rest2html
    [r2hc]: http://github.com/github/markup/tree/master/lib/github/markups.rb#L13


    例如,您有一个如下所示的回购:

    1
    2
    3
    4
    5
    6
    7
    8
    project/
        text.md
        subpro/
           subtext.md
           subsubpro/
               subsubtext.md
           subsubpro2/
               subsubtext2.md

    text.mdsubtext.md的相对链接可能如下所示:

    1
    [this subtext](subpro/subtext.md)

    text.mdsubsubtext.md的相对链接可能如下所示:

    1
    [this subsubtext](subpro/subsubpro/subsubtext.md)

    subsubtext.mdsubtext.md的相对链接可能如下所示:

    1
    [this subtext](../subtext.md)

    subsubtext.mdsubsubtext2.md的相对链接可能如下所示:

    1
    [this subsubtext2](../subsubpro2/subsubtext2.md)

    subsubtext.mdtext.md的相对链接可能如下所示:

    1
    [this text](../../text.md)


    截至2013年1月31日,Github markdown支持文件的相对链接。

    1
    [a relative link](markdown_file.md)

    但是,此评论主题中讨论了一些缺陷。

    作为替代方案,您可以使用Gitdown构建存储库的完整URL,甚至可以使它们分支识别,例如

    1
    2
    {"gitdown":"gitinfo","name":"url"} // https://github.com/gajus/gitdown
    {"gitdown":"gitinfo","name":"branch"} // master

    Gitdown是一个GitHub降价预处理器。它简化了与维护GitHub存储库的文档页面相关的常见任务,例如:生成目录,包括变量,生成URL以及在处理输入时获取有关存储库本身的信息。 Gitdown与您的构建脚本无缝集成。

    我是Gitdown图书馆的作者。


    GitHub可以通过最少的工作使这更好。这是一个解决方法。

    我想你想要更像的东西

    1
    [Your Title](your-project-name/tree/master/your-subfolder)

    或者指向README本身

    1
    [README](your-project-name/blob/master/your-subfolder/README.md)

    祝好运


    您可以链接到文件,但不能链接到文件夹,请记住,Github将在您的相对链接之前添加/blob/master/(并且文件夹缺少该部分,因此它们无法链接,也不能与HTML 标记或Markdown链接相关联)。

    所以,如果我们在myrepo/src/Test.java中有一个文件,它将有一个像:

    1
    https://github.com/WesternGun/myrepo/blob/master/src/Test.java

    要在自述文件中链接它,我们可以使用:

    1
    [This is a link](src/Test.java)

    或:This is a link

    (我猜,master表示master分支,当文件位于另一个分支时,它会有所不同。)


    只是想添加这个,因为如果目标链接是名称中包含空格的目录,则上述解决方案都不起作用。如果目标链接是一个目录并且它有空间,那么即使用来转义空间也不会在Github上呈现链接。只有解决方案适用于每个空间使用%20

    例如:如果目录结构是这样的话

    1
    2
    3
    4
    5
    6
    7
    Top_dir
    |-----README.md
    |-----Cur_dir1
          |----Dir A
               |----README.md
          |----Dir B
               |----README.md

    要在Top_dir中的README.md中链接到Dir A,您可以这样做:

    1
    [Dir 1](Cur_dir1/Dir%20A)


    您可以使用使用repo根目录中的相对URL。假设您的repo名为testRel,请将以下内容放在testRel/README.md中:

    1
    2
    3
    4
    5
    6
    7
    # My Project
    is really really cool. My Project has a subdir named myLib, see below.

    ## myLib docs
    see documentation:
        * myLib/
        * myLib/README.md


    这个问题很老了,但它似乎仍然很重要,因为将readme.md的相对引用放到Github上的wiki页面并不容易。

    我玩了一下,这个相对链接似乎工作得很好:

    [Your wiki page](../../wiki/your-wiki-page)

    两个../将删除/blob/master/并使用您的基地作为起点。我没有尝试过其他存储库而不是Github(可能存在兼容性问题)。


    我不确定我是否在这里看到这个选项。您只需在存储库中创建/folder并直接使用它:

    1
    [a relative link](/folder/myrelativefile.md)

    不需要blob或树或存储库名称,它就像一个魅力。


    如果你想在GitHub上找到你的wiki页面的相对链接,请使用:

    1
    Read here: [Some other wiki page](path/to/some-other-wiki-page)

    如果你想要链接到存储库中的文件,让我们说,引用一些头文件,并且维基页面位于维基的根目录,请使用:

    1
    Read here: [myheader.h](../tree/master/path/to/myheader.h)

    最后一个的基本原理是跳过带有"../"的"/ wiki"路径,并转到存储库树中的主分支,而不指定存储库名称,将来可能会更改。