是否有一种方法来创建一个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上打开了一个问题。
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。
截至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上的维基页面,使用这个:
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”路径。,然后转到存储库树中的主分支,而不指定存储库名称(将来可能会更改)。
例如,你有一个像这样的回购:
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)
你可以链接到文件,但不能链接到文件夹,并记住,Github将添加/blob/master/在你的相对链接之前(和文件夹缺乏这部分,所以他们不能被链接,也不能与HTML < >标签或Markdown链接)。
因此,如果我们在myrepo/src/Test.java中有一个文件,它将有一个这样的url:
https://github.com/WesternGun/myrepo/blob/master/src/Test.java
要在自述文件中链接它,我们可以使用:
[This is a link](src/Test.java)
or: <a href="src/Test.java">这是一个链接</a>. java
(我猜,master代表主分支,当文件在另一个分支中时,情况就不同了。)
在.md文件中,当您想要创建与同一项目文件夹或基于URL的链接相关的任何相关文件的链接时:
现有文件链接:
在.md文件中,在[]框中添加显示名称,然后在此框中打开(),在此框中添加/之后,它将自动获取所有现有文件夹的名称形式,您选择的文件夹,然后添加'/',它将显示内部文件或'文件夹'。这意味着它将自动获取路径,在结束时,创建您的URL。
例子:
[Enter Showing Name](/users/4000266/heysushil)
这一行是这样显示的:
输入显示名称
在.md文件中添加url
遵循相同的过程,只更改()框的URL路径,如下所示:
[HeySushil - YouTube](https://youtube.com/heysushil)
这看起来像HeySushil - YouTube
注意:记住在添加/ on()框后不需要手动添加force,它将自动获取所有现有的文件夹和文件。
以下是我在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回购。)
我发现适用于相对文件夹的方法:
[link text](subfolder/subsubfolder/relevantfolder/)
相关的文件夹是你试图链接到的文件夹。文件夹名称后面需要反斜杠。我尝试在路径中包含项目名称和tree/main,以及前面的答案中建议的其他内容,这导致了不存在的页面错误。子文件夹是整个回收项目文件夹中的一个文件夹。
因此,文件链接的形式是:
[link text](subfolder/subsubfolder/relevantfolder/index.html)
如果需要的文件不在任何文件夹或子文件夹中,链接很简单:
[link text](README.md)
例如,README文件不在任何子文件夹中,因此这可能是您用于README文件的确切相对链接。