从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?
当前回答
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相同)。不过,这种方法对于单个文件来说并不那么有用(您更可能使用它来下载特定的文件夹,正如我在上面链接的答案中所详述的那样)。
其他回答
为了跟进thomasfuchs所说的,但对于GitHub Enterprise用户,您可以使用以下内容。
curl-H'授权:令牌INSERTACCESSTOKENHERE'-H'接受:application/vnd.github.v3.raw'-O-Lhttps://your_domain/api/v3/repos/owner/repo/contents/path
这里还有API文档https://developer.github.com/v3/repos/contents
GitHub发布功能
您应该使用GitHub的发布功能将可下载数据(如编译的二进制文件)与用于生成该数据的源代码的标记版本相关联,而不是链接以下载回购中的特定文件。
https://github.com/blog/1547-release-your-software
我们很高兴宣布发布,这是一个向最终用户发送软件的工作流。发布是具有变更日志和二进制资产的一级对象,它们展示了Git工件之外的完整项目历史。发行版附带发行说明和下载软件或源代码的链接。按照许多Git项目的惯例,发布与Git标签绑定。您可以使用现有标记,或在发布标记时让发布者创建标记。
现在,可以使用以下google chrome扩展名下载存储库中的任何文件或任何特定文件夹:
github的GitZip:链接:https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn
用法:
在任何GitHub公共repo页面中。只需双击所需的项目。单击右下角的下载按钮。查看进度仪表板并等待浏览器触发器下载。获取ZIP文件。
要从Github repo下载文件,请使用带有原始文件链接的“curl”命令。
curl https://raw.githubusercontent.com/user/repo/filename --output filename
添加--output选项,后跟新文件名,将原始文件下载到新创建的文件中。
请使用“{host}/{user}/}repo}/branch}/{file}”的模式。要获得具体示例,请在Python中执行以下操作:
import pandas as pd
host = 'raw.github.com'
user = 'fivethirtyeight'
repo = 'data'
branch = 'master'
file = 'births/US_births_2000-2014_SSA.csv'
url = f'https://{host}/{user}/{repo}/{branch}/{file}'
df = pd.read_csv(url,sep=',',header=0)
df.head()