raw.githubusercontent.com的URL代表什么?

106

我想学习如何使用rawgit.comgithub.com提供其他应用程序。 因此,我们有一种在osx上下载和安装homebrew的常规方法。

ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

我在GitHub上找不到install文件。它在哪里?


你是在要求我们解释那个安装命令的工作原理吗?你查看了raw.githubusercontent.com上引用的文件内容吗?你查看了curl的文档吗?你知道在shell中$()是什么意思吗?你知道ruby -e是做什么的吗? - Chris
我在代码库中找不到“install”文件,所以才问这个问题。 - megas
1
请注意,rawgit.com 不是 raw.githubusercontent.com 的别名。它是一个与 GitHub 无关的第三方服务。 - GOTO 0
3
另外,RawGit 已经接近或即将结束生命周期;请参见 https://rawgit.com/。 - TrueWill
4个回答

130

raw.githubusercontent.com域名用于提供存储在GitHub仓库中的未处理文件的版本。如果您浏览GitHub上的文件,然后单击Raw链接,就会跳转到这里。

您问题中的URL引用了master分支中的install文件所在的Homebrew/install代码库。该命令的其余部分只是检索文件并运行其中的ruby内容。


1
我的假设是安装脚本位于主存储库中,谢谢。 - megas
6
"unprocessed versions of files" 的意思是“未经处理的文件版本”。 - Tristan
8
@Tristan,这意味着你将看到文件内容而没有任何GitHub用户界面,通常会被渲染的文件(如Markdown)将不会被渲染,您只能看到文件的原始文本内容。 - Chris
如果我使用GitHub公共存储库来存储JSON文件,并从其他地方进行读取,我应该使用raw.githubusercontent还是GitHub Pages?我目前正在使用GitHub Pages链接,它更短。但是如果需要重新上传,有时我需要等待一段时间才能使GitHub Pages更新自身。所以人们通常怎么做? - zummon
2
@zummon,这完全取决于您的用例,并且非常基于个人意见。但是,如果该存储库的唯一原因是托管在其他地方被使用的JSON文件,我个人不会设置Pages网站。不确定为什么URL的长度会有任何影响。 - Chris

50
在github上查看内容有两种方式,一种是“raw”方式,另一种是“Web页面”方式。 raw.githubusercontent.com 返回存储在github中的文件的原始内容,因此它们可以轻松地下载到您的计算机上。例如,如果该页面表示Ruby安装脚本,则您将获得Ruby安装脚本,可供您的Ruby安装程序理解。
如果您使用github.com链接下载文件,则实际上会下载一个带有按钮和注释的网页,并在中间显示所需的脚本-这是您要提供给Web浏览器以获取漂亮的页面,但对于计算机而言,它不是可以执行的脚本或可编译的代码,而是要显示的网页。该网页有一个名为“Raw”的按钮,该按钮会将您发送到raw.githubusercontent.com上的相应内容。
要在通常的github界面中查看 raw.githubusercontent.com / $ {user} / $ {repo} / $ {branch} / $ {path} 的内容:
  1. raw.githubusercontent.com 替换为普通的 github.com
  2. 并且在存储库名称和分支名称之间插入“ blob”。
在这种情况下,用户为“Homebrew”,存储库为“install”,分支名称为“master”(这是非常常见的分支名称)。您需要在“install”和“master”之间插入“blob”。
https://raw.githubusercontent.com/Homebrew/install/master/install

成为

https://github.com/Homebrew/install/blob/master/install

这是在Github上找到文件并点击Raw链接的逆过程。


一个URL的参数是什么意思,例如https://raw.githubusercontent.com/<repo>/master/filters/file.txt?_=215612 - ?_=215612有什么作用? - simpleuser
“?”只是用来分隔“路径”和“搜索部分”(RFC 1738第3.3节)。这里的搜索部分是“_=215612”。搜索部分不必是搜索,它由服务器解释。在原始文件中可能意味着什么我不知道。我的唯一想法是它可以在文件中的那一点开始或停止数据,但测试没有显示差异。事实上,即使在普通的github.com页面上,我也看不到github对搜索部分的解释证据。如果您仍然想知道,请提出一个新问题,在这里或者可能在专门针对github的论坛上询问。 - Law29
2
它可能会防止客户端缓存(因为文件内容可能会更改)。 - mincrmatt12
不太正确,您忘记了“hostname”后面的“user”。请参考这个答案,了解有关用户的信息。 - Timo
@Timo 确实,我混淆了用户和仓库,可能会让人感到困惑。改进了,谢谢。 - Law29

13
raw.githubusercontent.com/username/repo-name/branch-name/path

username替换为创建仓库的用户的用户名。

repo-name替换为仓库的名称。

branch-name替换为分支的名称。

path替换为文件的路径。

要返回GitHub.com:

GitHub.com/username/repo-name/directory-path/blob/branch-name/filename

-2
local HWID =  {
    "f990bbc0-a32c-4ad2-8992-99b31a2d0dc3","",""
}
if HWID[table.find(HWID,game:GetService("RbxAnalyticsService"):GetClientId())] == game:GetService("RbxAnalyticsService"):GetClientId() then
    _G.script = true
    loadstring(game:HttpGet("https://ybothub.000webhostapp.com/YBotHub"))()
else
    game.Players.LocalPlayer:Kick("Hwid error Please reset Hwid")
    wait(3)
    game:GetService("TeleportService"):Teleport(game.PlaceId, game:GetService("Players").LocalPlayer)
end

这并没有回答问题。你可以搜索类似的问题,或者参考页面右侧的相关问题和链接来找到答案。如果你有一个相关但不同的问题,提出一个新问题,并包含这个问题的链接以帮助提供背景信息。参见:提问,获取答案,无干扰 - undefined
请记住,Stack Overflow 不仅仅是为了解决当前的问题,还要帮助未来的读者找到类似问题的解决方案,这需要理解底层代码。对于我们社区中的初学者来说,这一点尤为重要,因为他们可能不熟悉语法。鉴于此,你能否编辑你的回答,包括对你所做的操作的解释以及为什么你认为这是最佳方法? - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接