Markdown文件中的GitHub相对链接

时间:2011-10-04 20:12:23

标签: github markdown github-flavored-markdown

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

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

# 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)。 / p>

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

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

    更新:我针对此功能请求针对GitHub打开了issue

11 个答案:

答案 0 :(得分:768)

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

GitHub Blog Post Relative links in markup files

  

从今天开始, GitHub支持标记文件中的相对链接   现在,您可以直接在不同的文档文件之间进行链接,无论是在GitHub本身上查看文档,还是在本地,使用不同的标记渲染器。

     

您想要链接定义的示例及其工作原理吗?这是给你的一些降价。
  而不是绝对的链接:

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

...你可以使用相对链接:

[a relative link](other_file.md)
     

我们会确保它与user/repo/blob/branch/other_file.md相关联。

     

如果您使用[a workaround link](repo/blob/master/other_file.md)之类的解决方法,则必须更新文档才能使用新语法。

     

这也意味着您的文档现在可以轻松独立,而无需始终指向GitHub


2011年12月20日更新:

GitHub markup issue 84目前由technoweenie关闭,评论为:

  

我们尝试为此添加<base>标记,但这会导致网站上其他相关链接出现问题。


2011年10月12日:

如果你看一下Markdown本身的 raw source of the README.md (!),似乎不支持相对路径。
你会找到像:

这样的参考文献
[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 :(得分:61)

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

project/
    text.md
    subpro/
       subtext.md
       subsubpro/
           subsubtext.md
       subsubpro2/
           subsubtext2.md

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

[this subtext](subpro/subtext.md)

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

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

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

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

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

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

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

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

答案 2 :(得分:13)

截至2013年1月31日Github markdown supports relative links to files

[a relative link](markdown_file.md)

但是,有一些不足之处discussed in this comment thread

作为替代方案,您可以使用Gitdown构建full URLs to the repository,甚至让它们分支识别,例如。

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

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

我是Gitdown图书馆的作者。

答案 3 :(得分:12)

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

我想你想要更像

的东西
[Your Title](your-project-name/tree/master/your-subfolder)

或指向README本身

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

祝你好运

答案 4 :(得分:6)

您可以使用<a href="">的回购根目录中的相对网址。假设您的仓库名为testRel,请将以下内容放入testRel/README.md

# My Project
is really really cool. My Project has a subdir named myLib, see below.

## myLib docs
see documentation:
    * <a href="testRel/myLib">myLib/</a>
    * <a href="testRel/myLib/README.md">myLib/README.md</a>

答案 5 :(得分:6)

只是想添加这个,因为如果目标链接是带有空格的目录,则上述解决方案都不起作用。如果目标链接是一个目录并且它有空间,那么甚至可以使用\来解除空间,并且不会在Github上呈现链接。只有解决方案适用于我,每个空间使用%20

例如:如果目录结构是这个

Top_dir
|-----README.md
|-----Cur_dir1
      |----Dir A
           |----README.md
      |----Dir B
           |----README.md

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

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

答案 6 :(得分:6)

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

因此,如果我们在<a>中有一个文件,则会有一个网址:

myrepo/src/Test.java

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

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

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

(我猜,<a href="src/Test.java">This is a link</a>表示master分支,当文件位于另一个分支时,它会有所不同。)

答案 7 :(得分:5)

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

我玩了一下,这个相对链接看起来效果很好:

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

两个../将移除/blob/master/并以您的基地为起点。我没有在Github上的其他存储库上试过这个(可能存在兼容性问题)。

答案 8 :(得分:4)

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

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

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

答案 9 :(得分:2)

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

Meteor.users.update(Meteor.userId(), {...})

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

Meteor.users.findOne(author._id)

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

答案 10 :(得分:0)

只需遵循以下格式。

[TEXT TO SHOW](actual URL to navigate)