是否有一种方法来创建一个URL锚,< >,链接从Markdown文件,到同一存储库和分支中的另一个文件(又名相对于当前分支的链接)?

例如,在主分支中,我有一个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)。

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

GOTO http://github.com/rynop/testRel,链接不工作。 GOTO http://github.com/rynop/testRel/blob/master/README.md,链接有效。

这是意料之中的,因为此时起始URL在分支中。现在我如何让它在README中拾取当前的分支。Md在存储库的根?

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


当前回答

以下是我在github的.md文件中找到的相对链接:

相对链接没有../(又名。链接到同一级别的文件,或在子目录),似乎总是工作。 包含..的相对链接只有当你已经在一个url包含子字符串/blob/的页面时,/才会起作用。 否则需要使用包含/blob/的完整url来链接。 实际上除了顶级/README。Md,当查看任何其他文件时,它们的url已经包含/blob/。 因此你可能总是可以使用包含..的相对链接。除了/README.md。 但/ README。Md是顶级的,因此它不需要包含../的相对链接。 因此,你不应该需要一个完整的路径链接(包含github域)链接到同一github repo文件。


示例(多种语言文档之间的链接)

在/ README。Md,可以使用相对链接没有../。 [中文](doc/cn/README.md) | [日本語](doc/jp/README.md) 在/ doc / cn/README。Md,因为当我们查看它时,url已经包含/blob/,因此可以使用相对链接与../。 (英语)(. . / . . / README.md) | [日本語](../jp/README.md)

(顺便说一下,这个例子来自这个git-merge-flow回购。)

其他回答

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

标记文件中的相对链接:

从今天开始,GitHub支持标记文件中的相对链接。 现在,您可以直接链接不同的文档文件,无论您是在GitHub上查看文档,还是使用不同的标记呈现器在本地查看文档。 您想要链接定义及其工作方式的示例吗?这是给你的Markdown。 而不是绝对的链接: [链接](https://github.com/user/repo/blob/branch/other_file.md) 你可以使用相对链接: [a相对链接](other_file.md) [a相对链接](路径%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目前已被technoweenie关闭,评论如下:

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


2011年10月12日:

如果你看一下README的原始源代码。md的Markdown本身(!),相对路径似乎不支持。 你会发现这样的参考资料:

[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

正如InvisibleWolf的回答中提到的,如果目标链接是一个目录,并且它有空间,那么您需要为每个空间使用%20。

这个问题很老了,但它似乎仍然很重要,因为从自述中输入相对引用并不容易。md到Github上的wiki页面。

我尝试了一下,这种相对联系似乎很有效:

[你的wiki页面](../../wiki/ Your -wiki-page)

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

如果你想要一个相对链接到你的GitHub上的维基页面,使用这个:

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的.md文件中找到的相对链接:

相对链接没有../(又名。链接到同一级别的文件,或在子目录),似乎总是工作。 包含..的相对链接只有当你已经在一个url包含子字符串/blob/的页面时,/才会起作用。 否则需要使用包含/blob/的完整url来链接。 实际上除了顶级/README。Md,当查看任何其他文件时,它们的url已经包含/blob/。 因此你可能总是可以使用包含..的相对链接。除了/README.md。 但/ README。Md是顶级的,因此它不需要包含../的相对链接。 因此,你不应该需要一个完整的路径链接(包含github域)链接到同一github repo文件。


示例(多种语言文档之间的链接)

在/ README。Md,可以使用相对链接没有../。 [中文](doc/cn/README.md) | [日本語](doc/jp/README.md) 在/ doc / cn/README。Md,因为当我们查看它时,url已经包含/blob/,因此可以使用相对链接与../。 (英语)(. . / . . / README.md) | [日本語](../jp/README.md)

(顺便说一下,这个例子来自这个git-merge-flow回购。)

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

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

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

在README中建立到目录A的链接。你可以这样做:

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