从GitHub下载单个文件

Rad*_*mko 564 git version-control github

我猜大多数人,开发人员,使用任何VCS,我希望你们中的一些人使用Git.您是否有任何提示或技巧如何获取存储库中单个文件的下载URL?

我不想要显示原始文件的URL; 在二进制文件的情况下它是无用的.

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

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

如果我们决定切换到Google代码,那么此处提供的功能是什么?

或者是否有开源项目的免费托管和VCS?

jon*_*scb 532

Git不支持下载存储库的部分内容.你必须下载所有这些.但你应该能够用GitHub做到这一点.

当您查看文件时,它具有指向"原始"版本的链接.该URL构造像这样

https://raw.githubusercontent.com/user/repository/branch/filename
Run Code Online (Sandbox Code Playgroud)

通过填写URL中的空白,您可以使用WgetcURL(带有-L选项,见下文)或任何下载单个文件的内容.同样,你不会通过这样做获得Git使用的任何漂亮的版本控制功能.

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

https://github.com/downloads/user/repository/filename
Run Code Online (Sandbox Code Playgroud)

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

  • 建议的URL格式对我不起作用.我发现[https://raw.github.com/user/repository/branch/filename](https://raw.github.com/user/repository/branch/filename)有效. (31认同)
  • 后人的注意事项:我刚测试它并使用原始的工作正常二进制文件. (15认同)
  • 如果您仍想使用curl,请在命令行上使用-L选项进行重定向:curl -L -O https://github.com/user/repository/raw/branch/filename (10认同)
  • @BrianC.:(至少截至2013年8月27日)答案中提到的URL格式(存储库名称后面的`raw`)现在自动重定向到您提到的格式(主机名`raw.github.com`).如有疑问,请浏览github.com上的相关文件,然后单击"原始"按钮. (5认同)
  • 这还有效吗?我这样做已经几个月了……但最近几周发生了一些变化。现在我必须在末尾包含令牌,否则从 https://raw.githubusercontent.com/ 下载文件时会收到 404。用于在通过下载请求发送身份验证时工作。 (2认同)

bea*_*end 504

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

  • 而不是"另存为",复制URL.那是文件的URL.您现在可以使用任何使用URL下载的工具下载它:wget,您的浏览器等. (16认同)
  • 这适用于单个 C# 文件。也许github应该添加另一个下载按钮。右键单击按钮不是很直观。 (4认同)
  • 停止执行这个冗长的步骤,使用此chrome扩展来执行此操作.https://chrome.google.com/webstore/detail/github-mate/baggcehellihkglakjnmnhpnjmkbmpkf (3认同)

Min*_*mal 43

转到DownGit - 输入您的 URL - 只需下载

无需安装任何东西或遵循复杂的说明;特别适合大型源文件。

免责声明:我是这个工具的作者。


使用 DownGit 下载


您可以将单个文件和目录下载为 zip。您还可以创建下载链接,甚至为 zip 文件命名。详细用法-这里


tho*_*chs 38

您可以使用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

  • 这个很好,但不幸的是它只支持最大1 MiB的文件. (4认同)
  • 如果在程序中执行此操作,请确保设置了用户代理。 (2认同)
  • 你能举一些路径的例子吗?如果你的仓库是 my-repo 并且你想要获取的文件位于 x/y/z.txt 那么 URL 将是...很难弄清楚 /owner/repo/ 应该由我填写。谢谢。 (2认同)

小智 25

根据这个要点,你可以使用wget或cURL:

  1. 单击GitHub仓库中的文件名.
  2. 单击"原始"以显示文件内容.
  3. 在浏览器中复制URL.
  4. 在命令行中,运行以下任一项:
    • wget --no-check-certificate --content-disposition https://URL-from-step3/
    • curl -LJO https://URL-from-step3/


Cam*_*ong 15

GitHub Mate可轻松下载单个文件,只需点击图标即可下载,目前它只适用于Chrome.

GitHub Mate下载

  • 我使用的是最新版本的Chrome,34.0.1847.116,这肯定不起作用.您使用什么操作系统?我在OS X Mavericks上. (2认同)

Joe*_*Leo 14

现在可以在GitHub中找到任何文件.您需要翻译raw.github.com的文件.例如,如果您的文件位于您的存储库中:

https://github.com/<username>/<repo>/some_directory/file.rb
Run Code Online (Sandbox Code Playgroud)

使用wget,您可以从以下位置获取原始文件:

https://raw.github.com/<username>/<repo>/<branch>/some_directory/file.rb
Run Code Online (Sandbox Code Playgroud)

Rails Composer就是一个很好的例子.

  • 某些文件托管在raw.githubusercontent.com上 (2认同)

Dar*_*eam 13

2021 年,GitHub 添加了直接在网络上打开 Visual Studio Code 的新功能。.当您在任何存储库中时,只需按句号(又名句点键)即可启动它。

因此,要下载任何特定文件,您可以通过按 键启动 vscode .,然后它将显示 vscode 中存储库的所有文件,您可以通过right click>下载您想要的任何文件dowload

在此输入图像描述


Mar*_*ark 12

你可以这样使用curl:

curl -OL https://raw.githubusercontent.com/<username>/<repo-name>/<branch-name>/path/to/file

O表示curl下载内容
L意味着curl遵循重定向


jab*_*tta 11

2019年总结

有多种方法可以处理此问题,具体取决于文件有多大、是否需要下载文件以外的文件夹,以及您是否计划手动或以编程方式执行此操作。

下面总结了六个选项。对于那些更喜欢动手解释的人,我整理了一个 YouTube 视频:从 GitHub 下载单个文件和文件夹

另外,对于那些需要从 GitHub 下载单个文件夹/目录(而不是文件)的人,我在 StackOverflow 上发布了类似的答案


1. GitHub 用户界面

  • 大多数图像上都有一个下载按钮。
  • 存储库主页上有一个下载按钮。当然,这会下载整个 repo,之后您需要解压缩下载,然后手动拖出您需要的特定文件。

2. 浏览器上下文菜单

  • 转到 GitHub 上的文件,右键单击“原始”按钮以打开浏览器的上下文菜单。从那里,如果您使用的是 Google Chrome,请选择“将链接另存为...”。其他浏览器将具有类似的用户界面,但选择描述可能会有所不同。例如,它将在 Safari 上列为“下载链接文件”和“将链接文件下载为”。

3. 第三方工具

  • 有多种浏览器扩展和网络应用程序可以处理这个问题,DownGit就是其中之一。只需将 GitHub URL 粘贴到文件中,然后按“下载”按钮。请注意,链接应该是 GitHub.com 托管存储库视图,而不是直接文件链接。文件链接示例:https://github.com/babel/babel-eslint/blob/master/lib/parse.js.

4.颠覆

  • GitHub 不支持 git-archive(允许我们下载特定文件的 git 功能)。但是,GitHub 确实支持各种 Subversion 功能,我们可以为此目的使用其中之一。Subversion 是一个版本控制系统(git 的替代品)。您需要安装 Subversion。获取要下载的文件的 GitHub URL。不过,您需要修改此 URL。您需要指向存储库的链接,后跟单词“trunk”,并以嵌套文件的路径结尾。换句话说,使用我上面提到的相同文件链接,我们将“blob/master”替换为“trunk”。最后,打开一个终端,导航到你想要下载内容的目录,输入以下命令(用你构建的 URL 替换 URL):svn export https://github.com/babel/babel-eslint/trunk/lib/parse.js

5. 卷曲

  • 您需要安装 cURL。转到 GitHub.com 上的文件,左键单击“Raw”按钮以获取直接文件链接,复制此 URL,打开终端,导航到您希望将内容下载到的目录,键入执行以下命令,将文件名替换为您想要命名的任何名称,并将 URL 替换为您刚刚复制的 URL:curl -o parse.js https://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 相同)。但是,此方法对于单个文件并不是那么有用(您更有可能使用它来下载特定文件夹,如我上面链接的答案中所述)。


小智 10

跟进thomasfuchs的说法,但对于GitHub Enterprise用户来说,这是你可以使用的.

curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept: application/vnd.github.v3.raw' -O -L https://your_domain/api/v3/repos/owner/repo/contents/path

这里还有API文档https://developer.github.com/v3/repos/contents


小智 10

  1. 在github上,打开要下载的文件
  2. 找到与“指责”按钮相邻的“原始”按钮
  3. 按键盘上的“Alt”,同时单击鼠标左键
  4. 该文件将以“.txt”格式自动下载(对我来说是这样)
  5. 手动将“.txt”扩展名更改为“.csv”扩展名

这对我有用,我希望对你也有用。


red*_*rot 10

  1. Copy page link simply
  2. In command line type: wget -L (exact copied link)
  3. 只需替换blob步骤 2raw中的即可
  4. 进入

  • @BrendanMetcalfe 是因为你没有包 wget 。先安装 (2认同)

DJJ*_*DJJ 9

如果您想从github使用中下载zip文件wget

wget -O filename.zip https://github.com/downloads/user/repository/filename.zip?raw=true
Run Code Online (Sandbox Code Playgroud)

有关详细信息,请访问网站


Abr*_*don 8

有一个Chrome扩展程序叫做Enhanced Github

它将在每个文件的右侧直接添加一个下载按钮。

在此处输入图片说明


pka*_*amb 7

GitHub 发布功能

您应该使用 GitHub 的Releases功能将可下载数据(例如编译后的二进制文件)与用于生成该数据的源代码的标记版本相关联,而不是链接以下载存储库中的特定文件。

https://github.com/blog/1547-release-your-software

我们很高兴地宣布发布,这是一种将软件交付给最终用户的工作流程。发布是具有变更日志和二进制资产的一流对象,它们呈现了 Git 工件之外的完整项目历史。

发行版附有发行说明和下载软件或源代码的链接。

遵循许多 Git 项目的约定,发布与 Git 标签相关联。您可以使用现有标签,或者让发布在发布时创建标签。

在此处输入图片说明

  • 是的!这是最简单的解决方案,可以直接从浏览器中完成!1. 从存储库主页中,选择“releases” 2. 单击提交编号。3. 找到您想要的文件,单击三个点“...”,然后选择“查看文件” 4. 单击“查看原始”以下载文件! (2认同)

saa*_*123 6

此方法适用于Windows,因为我从未使用过MAC,所以我不知道MAC中用于替代密钥的替代密钥是什么,下面将要提到。

让我们谈谈CSV文件。如果要下载CSV文件,请执行以下操作:

  1. 转到要下载的特定数据集,然后单击它。
  2. 您将在数据集的右上方看到“原始”按钮。
  3. 按下“ Alt”,然后左键单击“ Raw”按钮。
  4. 整个CSV文件将下载到您的系统中。

请记住,您必须同时按Alt和左键单击。只需单击“原始”按钮,即可在浏览器中打开CSV。

希望对您有所帮助。


Cla*_*MBE 6

只需使用 wget 和 raw=True 参数

wget "https://github.com/user/repository/blob/master/directory/file_name?raw=True" -O target_path/file_name
Run Code Online (Sandbox Code Playgroud)


Kev*_*ord 5

您只需要使用raw文件的URL即可。

例如,下载AFNetworking的自述文件:

curl https://raw.githubusercontent.com/AFNetworking/AFNetworking/master/README.md > ADREADME.md 
Run Code Online (Sandbox Code Playgroud)

由于它是公共回购协议,因此您不需要任何凭据。请注意网址类型:raw.githubusercontent.com/path/to/file