您可以直接链接到文件(../README.md
),或者使用完整的绝对URL直接链接到仓库根目录:https://github.com/用户名/仓库名
在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)
那将为您提供URL:
https://github.com/UserName/RepoName/blob/master/somedir/../README.md
将被标准化为
https://github.com/UserName/RepoName/blob/master/README.md
然而,如果你只想指向你的 Repo 根目录(或任何其他目录),那么最好使用完整的 URL。毕竟,如果有人下载了你的 Repo 并在本地查看源代码,则相对于 Repo 根目录的相对 URL 与在 GitHub 上查看文件时不同。在这种情况下,你可能还是想将他们指向 GitHub。因此,你应该使用以下内容:
[root](https://github.com/UserName/RepoName)
另一个优点是,如果您的文档被发布到其他地方(例如文档托管服务),链接仍将指向GitHub存储库,而不是托管服务上的某个随机页面。毕竟,在您的项目根目录中的README文件不太可能包含在该托管服务的
docs/
目录中的内容中。
也许了解GitHub的URL方案如何工作会有所帮助。我说“可能”是因为我没有内部知识,只是对这些类型的系统通常如何设计有一般了解。
GitHub并不提供平面文件。相反,他们的服务器会拆开URL,并使用各种部分返回正确的响应。 URL结构类似于:
https://github.com/<username>/<repository name>/<resource type>/<branch>/<resource path>
用户名
、
仓库名称
、
资源类型
和
分支
都是任意的,只是GitHub确保它们从正确的位置获取信息的一种方式。
资源类型
很重要,因为他们可能不会从工作树中获取文件。相反,他们会通过更低级别直接从Repo本身提取文件/目录列表。在这种情况下,获取文件与获取目录列表非常不同,并且需要不同的代码路径。因此,您不能使用指向树(目录)或反之的
资源路径
请求blob(文件)。服务器会混淆并返回错误。
重点是GitHub的服务器遵循略微不同的规则。您可以使用相对URL在
资源路径
的URL部分内移动,但是一旦您改变了URL中
资源路径
部分中的
资源类型
,那么如果您不在URL中同时更改
资源类型
,那么GitHub的整个方案就会破裂。然而,浏览器(或HTML或Markdown)对此一无所知,相对URL无法弥补这一点。因此,除非您完全了解所有细微差别,否则无法可靠地使用相对URL在GitHub repo中移动。有时候最好使用绝对链接。
[Projects](/../../projects)
在根目录下的Readme.md
中链接到前端/项目。Github返回404
错误。链接转换为Front-end/Projects
。你的解决方案还有效吗? - DevelopZen[BranchName](/../BranchName/readme.md)
。您不需要额外指定../tree
。它将自动添加。 - Gangula../
来切换到项目 README.md 中组织的顶级相对 URL。 - gridtrak