协慌网

登录 贡献 社区

从 GitHub 下载单个文件

我想你们中的大多数开发人员都使用任何VCS ,并且希望你们中的一些人使用 Git。您是否有技巧或窍门,如何获得存储库中单个文件的下载 URL?

我不希望显示原始文件的 URL。如果是二进制文件,那是没有用的。

http://support.github.com/discussions/feature-requests/41-download-single-file

甚至可以将 GitHub 用作 “下载服务器” 吗?

如果我们决定切换到 Google Code,此处是否提供了上述功能?

还是为开源项目提供免费的托管和 VCS?

答案

Git 不支持下载存储库的某些部分。您必须全部下载。但是您应该能够使用 GitHub 做到这一点。

当您查看文件时,它具有指向 “原始” 版本的链接。 URL的结构如下

https://raw.githubusercontent.com/user/repository/branch/filename

通过填写 URL 中的空格,您可以使用WgetcURL (使用-L选项,请参见下文)或下载单个文件的任何方法。同样,这样做不会获得 Git 使用的任何出色的版本控制功能。

更新:我注意到您提到这不适用于二进制文件。您可能不应该在 Git 存储库中使用二进制文件,但是 GitHub 为每个存储库提供了一个下载部分,您可以使用该部分来上传文件。如果需要多个二进制文件,则可以使用. zip 文件。下载上载文件的 URL 为:

https://github.com/downloads/user/repository/filename

请注意,上面给出的 URL(来自github.com上的链接)将重定向到raw.githubusercontent.com 。您不应直接使用此 HTTP 302 重定向给出的 URL,因为根据RFC 2616 :“由于重定向有时可能会更改,因此客户端应继续将 Request-URI 用于将来的请求。”

  1. 转到您要下载的文件。
  2. 单击它以查看 GitHub UI 中的内容。
  3. 在右上角,右键单击Raw按钮。
  4. 另存为...

您可以使用 V3 API 来获取这样的原始文件(您需要 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 令牌,请按照此处的说明进行操作: https://help.github.com/articles/creating-an-access-token-for-command-line-use

我也将其写成要点: https://gist.github.com/madrobby/9476733