从GitHub repo下载单个文件有哪些技巧?
我不想要显示原始文件的URL;对于二进制文件,什么都没有。
http://support.github.com/discussions/feature-requests/41-download-single-file
是否有可能将GitHub用作“下载服务器”?
如果我们决定切换到GoogleCode,是否提供了上述功能?
或者开源项目是否有免费托管和VCS?
从GitHub repo下载单个文件有哪些技巧?
我不想要显示原始文件的URL;对于二进制文件,什么都没有。
http://support.github.com/discussions/feature-requests/41-download-single-file
是否有可能将GitHub用作“下载服务器”?
如果我们决定切换到GoogleCode,是否提供了上述功能?
或者开源项目是否有免费托管和VCS?
当前回答
您可以使用V3API获取如下原始文件(需要OAuth令牌):
curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept:
application/vnd.github.v3.raw' -O -L
https://api.github.com/repos/*owner*/*repo*/contents/*path*
所有这些都必须在一条线上进行。-O选项将文件保存在当前目录中。可以使用-o filename指定其他文件名。
要获取OAuth令牌,请遵循以下说明。
我也把这个写下来作为要点。
其他回答
2019年总结
有多种方法可以处理此问题,具体取决于文件的大小、是否需要下载除文件外的文件夹,以及是否计划手动或以编程方式执行此操作。
下面总结了六个选项。对于那些喜欢更实际的解释的人,我制作了一个YouTube视频:从GitHub下载个人文件和文件夹。
此外,对于那些需要从GitHub下载单个文件夹/目录(而不是文件)的人,我在StackOverflow上发布了类似的答案。
1.GitHub用户界面
大多数图像上都有一个下载按钮。存储库主页上有一个下载按钮。当然,这将下载整个repo,之后您需要解压缩下载文件,然后手动拖出所需的特定文件。
2.浏览器上下文菜单
转到GitHub上的文件,右键单击“Raw”按钮打开浏览器的上下文菜单。从那里,如果您使用的是谷歌Chrome,请选择“将链接另存为…”。其他浏览器将具有类似的UI,但选择说明可能有所不同。例如,它将在Safari上显示为“下载链接文件”和“下载链接的文件为”。
3.第三方工具
有多种浏览器扩展和web应用可以处理这一问题,DownGit就是其中之一。只需将GitHub URL粘贴到文件中,然后按“下载”按钮。请注意,链接应该是GitHub.com托管的存储库视图,而不是直接文件链接。文件链接示例:https://github.com/babel/babel-eslint/blob/master/lib/parse.js.
4.子版本
GitHub不支持git存档(允许我们下载特定文件的git功能)。然而,GitHub支持多种Subversion功能,我们可以使用其中一种功能。Subversion是一种版本控制系统(git的替代品)。您需要安装Subversion。获取要下载的文件的GitHub URL。不过,您需要修改此URL。您需要指向存储库的链接,后跟单词“trunk”,并以嵌套文件的路径结尾。换句话说,使用我上面提到的相同文件链接,我们将用“trunk”替换“blob/master”。最后,打开一个终端,导航到要下载内容的目录,输入以下命令(用您构建的URL替换URL):svn exporthttps://github.com/babel/babel-eslint/trunk/lib/parse.js,然后按enter键。
5.cURL
您需要安装cURL。转到GitHub.com上的文件,左键单击“Raw”按钮进入直接文件链接,复制此URL,打开终端,导航到要下载内容的目录,键入以下命令,将文件名替换为您想命名的名称,并将URL替换为您刚才复制的名称:curl-o parse.jshttps://raw.githubusercontent.com/babel/babel-eslint/master/lib/parse.js.
6.GitHub API
这实际上是DownGit在幕后使用的。使用GitHub的REST API,向内容端点发出GET请求。端点的构造如下:https://api.github.com/repos/:owner/:repo/contents/:path.替换占位符后,示例端点为:https://api.github.com/repos/babel/babel-eslint/contents/lib/parse.js.这将为您提供该文件的JSON数据,包括下载URL(与我们在上面的cURL示例中使用的下载URL相同)。不过,这种方法对于单个文件来说并不那么有用(您更可能使用它来下载特定的文件夹,正如我在上面链接的答案中所详述的那样)。
您应该只使用文件的原始URL进行操作。
例如,下载AFNetworking的README:
curl https://raw.githubusercontent.com/AFNetworking/AFNetworking/master/README.md > ADREADME.md
由于它是公共回购,因此您不需要任何凭据。请注意url的类型:raw.githubusercontent.com/path/to/file
您可以尝试github文件获取器,它是一个命令行工具,可以从github repo下载单个文件夹或文件。
想象一个真实的场景:您正在访问以下网页,并想单独下载异步子目录。
https://github.com/reduxjs/redux/tree/master/examples
很抱歉不能发布图片。
使用github文件获取器,您应该首先复制该页面的urlhttps://github.com/reduxjs/redux/tree/master/examples/async,然后在命令行中运行以下命令:
提取器--url=https://github.com/reduxjs/redux/tree/master/examples/async
Git不支持下载部分存储库。你必须下载所有这些。但你应该能够使用GitHub完成这项工作。
当您查看文件时,它有一个指向“原始”版本的链接。URL的构造如下
https://raw.githubusercontent.com/user/repository/branch/filename
通过填写URL中的空白,您可以使用Wget或cURL(带有-L选项,请参见下文)或任何方式下载单个文件。同样,这样做不会得到Git使用的任何好的版本控制功能。
更新:我注意到你提到这不适用于二进制文件。您可能不应该在Git存储库中使用二进制文件,但GitHub为每个存储库提供了一个下载部分,您可以使用它来上传文件。如果需要多个二进制文件,可以使用.zip文件。下载上载文件的URL为:
https://github.com/downloads/user/repository/filename
请注意,上面从github.com上的链接中给出的URL将重定向到raw.githubusercontent.com。您不应该直接使用此HTTP 302重定向所提供的URL,因为根据RFC 2616:“由于重定向有时可能会更改,因此客户端应继续使用请求URI进行未来请求。”
可以这样使用curl:
卷曲-OLhttps://raw.githubusercontent.com/<username>/<repo名称>/<branch名称>/path/to/file
O表示curl下载内容L表示卷曲遵循重定向