Markdown文件中的GitHub相对链接

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

例如,在master分支中,我有一个README.md文件,我想这样做:

# My Projectis really really cool. My Project has a subdir named myLib, see below.
## myLib documentationsee documentation [here](myLib/README.md)

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

这里有一个工作的例子来说明我的意思:

  1. 转到http://github.com/rynop/testRel,链接不起作用。
  2. 转到http://github.com/rynop/testRel/blob/master/README.md,链接有效。

这是预期的,因为此时起始URL在分支中。现在如何让它在存储库根目录的README.md中获取当前分支?

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

875865 次浏览

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

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

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

你想要链接定义的例子以及它们是如何工作的?这里有一些Markdown给你。
而不是绝对链接:

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

…您可以使用相对链接:

[a relative link](other_file.md)[a relative link](path%20with%20spaces/other_file.md)

我们将确保它链接到user/repo/blob/branch/other_file.md

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

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

marcono1234添加的评论

同样有用:当链接以/开头时,它是相对于存储库的根目录的(无论Markdown文件是否嵌套在子目录中)


2011年12月20日更新:

github标记问题84目前由技术人员关闭,注释:

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


2011年10月12日:

如果你看一下Markdown本身的#0的原始源代码(!),相对路径似乎不被支持。
你会发现这样的引用:

[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

正如隐形狼回答所指出的,如果目标链接是一个目录并且它有空间,那么您需要对每个空间使用%20

您可以将存储库根目录中的相对URL与<a href="">一起使用。假设您的存储库名为testRel,请将以下内容放在testRel/README.md中:

# My Projectis really really cool. My Project has a subdir named myLib, see below.
## myLib docssee documentation:* <a href="testRel/myLib">myLib/</a>* <a href="testRel/myLib/README.md">myLib/README.md</a>

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

我觉得你想要的更像是

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

或指向自述文件本身

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

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

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

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

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

[a relative link](markdown_file.md)

然而,有一些不足之处是在这个评论线程中讨论

作为替代方案,您可以使用Gitdown来构造存储库的完整URL,甚至使它们感知分支,例如:

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

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

我是Gitdown库的作者。

如果您想在GitHub上获得指向您的wiki页面的相对链接,请使用以下命令:

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

如果您想要指向存储库中的文件的链接,让我们说,引用某个头文件,并且wiki页面位于wiki的根目录,请使用以下命令:

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

最后一个的基本原理是跳过带有“…/”的“/wiki”路径,转到存储库树中的主分支,而不指定存储库名称,这可能会在将来发生变化。

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

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

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

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

例如,您有一个类似以下的repo:

project/text.mdsubpro/subtext.mdsubsubpro/subsubtext.mdsubsubpro2/subsubtext2.md

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

[this subtext](subpro/subtext.md)

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

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

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

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

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

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

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

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

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

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

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

要链接到Top_dir中的Dir AREADME.md您可以这样做:

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

您可以链接到文件,但不能链接到文件夹,请记住,Github将在您的相对链接之前添加/blob/master/(文件夹缺少该部分,因此无法链接,也不能使用超文本标记语言<a>标签或Markdown链接)。

因此,如果我们在myrepo/src/Test.java中有一个文件,它将有一个URL,例如:

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代表master分支,当文件在另一个分支中时,它会有所不同。)

只要按照下面的格式。

[TEXT TO SHOW](actual URL to navigate)

您还可以在底部插入链接(相对或绝对),以减少文本中的混乱。
它也可以是重复链接的好选择。

This is [my linked text].
[my linked text]: relative/path/in/repo/to/file.txt "Optional title for mouse hover"

这是我的链接文本

Markdown文件中Github目录链接中的行为可能会引起一些麻烦。

所有文件都有一个以blob开头的url,

blob/<branch>/<path>/<fileName>

而目录有一个以tree开头的url:

tree/<branch>/<path>

因此,指向目录的相对链接不应该起作用。它指向一个以blob开头的URL。神奇的是,Github会自动将一些相对路径更改为路径。不幸的是,没有包含“…”的URL

我花了一些时间来检查https://github.com/fluentcodes/GitSamples-GIT/tree/github-readme-links上Github目录链接的奇怪行为。

.md文件中,当您想创建指向与相同的project folderURL链接相关的任何相关文件的链接时:

  1. 现有文件链接:

.md文件中添加显示名称在[]框中,然后打开()在这个框中添加/之后,它将自动获取所有现有的文件夹名称表单,您选择您的文件夹,然后添加'/'它将显示内部file或'文件夹'。这意味着它将自动获取路径,最后创建您的URL。

示例:

[Enter Showing Name](/users/4000266/heysushil)

这一行显示如下:输入显示名称

  1. .md文件上添加URLs

遵循相同的过程,只更改()框路径URL像这样:

 [HeySushil - YouTube](https://youtube.com/heysushil)

看起来像HeySushil-YouTube

注意:请记住,在()框上添加/后,无需手动添加力,它将自动获取所有现有的foldersfiles