协慌网

登录 贡献 社区

Markdown 文件中的 GitHub 相对链接

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

例如,在 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 链接到另一个. md,而不必担心我所在的分支(避免使用包含 github.com 分支名称的绝对 URL)。

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

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

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

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

答案

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)

并且确保将其链接到user/repo/blob/branch/other_file.md

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

这也意味着您的文档现在可以轻松地独立存在,而不必总是指向 GitHub


2011 年 12 月 20 日更新:

GitHub 标记问题 84目前已由technoweenie关闭,并具有以下注释:

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


2011 年 10 月 12 日:

如果您查看 Markdown 本身(!) 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

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

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)

自 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 库的作者。