从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?
当前回答
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进行未来请求。”
其他回答
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相同)。不过,这种方法对于单个文件来说并不那么有用(您更可能使用它来下载特定的文件夹,正如我在上面链接的答案中所详述的那样)。
简单复制页面链接在命令行中键入:wget-L(精确复制的链接)只需在步骤2中将blob替换为raw进来
现在,可以使用以下google chrome扩展名下载存储库中的任何文件或任何特定文件夹:
github的GitZip:链接:https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn
用法:
在任何GitHub公共repo页面中。只需双击所需的项目。单击右下角的下载按钮。查看进度仪表板并等待浏览器触发器下载。获取ZIP文件。
在Mac或Linux上安装jq并使用它从Github中提取文件,如下所示:
curl -H 'Authorization: token <ACCESS_TOKEN>' \
-H "Accept: application/vnd.github.v3+raw" -L \
https://api.github.com/repos/MY-ORG/MY-REPO/contents/MY-FILE-PATH | \
jq -r '.content' | base64 --decode > MY_FILE_NAME.txt
可以在此处找到上述命令的文档。
GitHub发布功能
您应该使用GitHub的发布功能将可下载数据(如编译的二进制文件)与用于生成该数据的源代码的标记版本相关联,而不是链接以下载回购中的特定文件。
https://github.com/blog/1547-release-your-software
我们很高兴宣布发布,这是一个向最终用户发送软件的工作流。发布是具有变更日志和二进制资产的一级对象,它们展示了Git工件之外的完整项目历史。发行版附带发行说明和下载软件或源代码的链接。按照许多Git项目的惯例,发布与Git标签绑定。您可以使用现有标记,或在发布标记时让发布者创建标记。