(我需要它适用于任何叉子)
所以它看起来像是在根目录中提供某个文件的链接的唯一方式:
the [Root](/README.md)
或
the [Root](../README.md)
(例如,如果它位于/doc/README.md)
同时我可以在不引用文件的情况下引用任何文件夹
the [Doc](/doc)
但是如果我尝试将链接放到根文件夹中:
the [real root](/)
the [real root](../)
我会有一个这样的链接
https://github.com/UserName/RepoName/的团块/主
与
不同https://github.com/UserName/RepoName/的团块/主 /文档
指的是404
所以,如果我不想在根目录中引用README.md(我根本就没有它)
答案 0 :(得分:11)
[the real relative root of any fork](/../../)
它始终指向默认分支。对我来说没问题,所以由你决定
PS
通过这样的技巧,您还可以访问以下功能:
[test](/../../tree/test)
- 链接到另一个分支
[doc/readme.md](/../../edit/master/doc/readme.md)
- 在编辑器中打开
[doc/readme.md](/../../delete/master/doc/readme.md)
- 要求删除文件
[doc/readme.md](/../../commits/master/doc/readme.md)
- 历史
[doc/readme.md](/../../blame/master/doc/readme.md)
- 责备模式
[doc/readme.md](/../../raw/master/doc/readme.md)
- 行模式(将重定向)
[doc/](/../../new/master/doc/)
- 要求创建新文件
[doc/](/../../upload/master/doc/)
- 要求上传文件
[find](/../../find/test)
- 查找文件
答案 1 :(得分:2)
您可以直接链接到文件(../README.md
),也可以直接使用完整的绝对网址直接链接到repo根:https://github.com/UserName/RepoName
使用相对链接在GitHub上运行得不好。请注意以下两个网址之间的区别:
https://github.com/UserName/RepoName/tree/master/somedir
https://github.com/UserName/RepoName/blob/master/somedir/somefile
请注意,第一个指向目录,第二个指向文件。然而,在" RepoName"之后对于文件,我们有tree
(对于目录)或blob
。因此,两者之间的相对联系不会正常运作。在GitHub上,您不能使用相对链接来链接文件和目录。但是,您可以在两个文件之间进行链接(因为两个URL都包含blob
)。因此,如果您想在根目录中从somefile
链接回README.md
,则可以执行以下操作:
[README](../README.md)
那会给你一个网址:
https://github.com/UserName/RepoName/blob/master/somedir/../README.md
将被标准化为
https://github.com/UserName/RepoName/blob/master/README.md
但是,如果您只想指向Repo(或任何其他目录)的根目录,那么最好使用完整的URL。毕竟,如果有人下载了您的仓库并且正在本地查看源,则Repo根目录的相对URL将与在GitHub上查看文件时的相对URL不同。在这种情况下,你可能想要将它们指向GitHub。因此,您应该使用:
[root](https://github.com/UserName/RepoName)
另一个优点是,如果您的文档在其他地方发布(可能是文档托管服务),该链接仍将指向GitHub仓库,而不是托管服务上的一些随机页面。毕竟,项目根目录中的自述文件不太可能包含在所述托管服务上的docs/
目录的内容中。
也许这有助于理解GitHub的URL方案可能有效。我说"大概"因为我没有内部知识,只是对这些类型的系统通常如何设计的一般理解。
GitHub不提供平面文件。相反,他们的服务器将URL分开,并使用各种部分返回正确的响应。 URL结构如下所示:
https://github.com/<username>/<repository name>/<resource type>/<branch>/<resource path>
username
,repository name
,resource type
和branch
相当随意,只是GitHub的方法,以确保他们从正确的位置提取信息。
resource type
很重要,因为它们可能无法从工作树中提取文件。相反,他们通过较低级别直接从Repo本身提取文件/目录列表。在这种情况下,获取文件与获取目录列表非常不同,并且需要不同的代码路径。因此,您无法请求带有resource path
的blob(文件)指向树(目录),反之亦然。服务器感到困惑并返回错误。
关键是GitHub的服务器工作在一组略有不同的规则上。您可以使用相对网址在网址的resource path
部分内移动,但是一旦更改了网址resource type
部分中的resource path
,就可以使用GitHub的整个方案如果您不更改网址中的resource type
,则会损坏。但是,浏览器(或HTML或Markdown)对此并不了解,相对URL也不会对此进行补偿。因此,除非您了解所有细微之处,否则您无法可靠地使用相对URL在GitHub仓库中移动。有时候使用绝对链接会更好。