是否有一种方法来创建一个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目录链接的行为可能会造成一些头痛。

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

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

目录的url以树开头:

tree/<branch>/<path>

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

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

其他回答

例如,你有一个像这样的回购:

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

潜台词的相对链接。文本中的Md。Md可能是这样的:

[this subtext](subpro/subtext.md)

与潜台词的相对链接。文本中的Md。Md可能是这样的:

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

潜台词的相对链接。潜台词里的Md。Md可能是这样的:

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

subsubtext2的相对链接。潜台词里的Md。Md可能是这样的:

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

到文本的相对链接。潜台词里的Md。Md可能是这样的:

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

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。

在标记文件中的Github目录链接的行为可能会造成一些头痛。

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

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

目录的url以树开头:

tree/<branch>/<path>

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

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

截至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图书馆的作者。

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

This is [my linked text].

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

这是我的链接文本。