从GitHub下载单个文件

从GitHub存储库下载单个文件有哪些提示?

我不想要显示原始文件的URL;在二进制文件的情况下,什么都没有。

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

是否有可能将GitHub用作“下载服务器”?

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

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

1418106 次浏览
  1. 您链接到的页面回答了第一个问题。

  2. GitHub还有一个下载工具,用于发布等内容。

  3. Google Code根本没有Git

  4. GitHub、Google Code和SourceForge只是开始,是免费托管的。SourceForge可能仍然会执行CVS

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,因为根据rfc2616:“由于重定向可能会偶尔更改,客户端应该继续使用请求URI进行未来的请求。”

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

我认为新的url结构是raw.giturl例如:

git file

原始

现在在GitHub中,任何文件都可以做到这一点。您需要将文件转换为raw.github.com.例如,如果您的文件位于以下存储库中:

https://github.com/<username>/<repo>/some_directory/file.rb

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

https://raw.github.com/<username>/<repo>/<branch>/some_directory/file.rb

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

github mate使单个文件下载毫不费力,只需单击图标即可下载,目前仅适用于Chrome。

GitHub伴侣下载

您可以使用V3 API获取这样的原始文件(您需要一个OAuth令牌):

curl -H 'Authorization: token INSERTACCESSTOKENHERE' -H 'Accept:application/vnd.github.v3.raw' -O -Lhttps://api.github.com/repos/*owner*/*repo*/contents/*path*

所有这些都必须放在一行上。-O选项将文件保存在当前目录中。您可以使用-o filename指定不同的文件名。

要获取OAuth令牌,遵循这些指示

我也把它写成了一个要点

这就是刚才对我起作用的…

  1. 在单独的选项卡中打开原始文件。

  2. 将记事本中的全部内容复制到新文件中。

  3. 将文件保存在它最初拥有的扩展名中

用我刚才下载的php文件测试(在回答时)

  1. 在“桌面克隆”下方的右手边,它说“下载Zip文件”
  2. 下载Zip文件
  3. 提取文件

如果您碰巧使用curl和Firefox……您可以使用cliget附加组件生成包括所有身份验证机制(又名cookie)的curl调用。

因此,右键单击raw按钮cliget->“复制链接的URL”,然后将其粘贴到shell中。即使您必须登录才能看到它,您也会得到您的文件。

为了跟进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

这肯定会奏效。至少在Chrome。右键单击“原始”图标->将链接另存为

如果您想使用wgetgithub下载zip文件

wget -O filename.zip https://github.com/downloads/user/repository/filename.zip?raw=true

查看此网站了解更多详细信息

您应该使用文件的raw URL来执行此操作。

例如下载AFNet工作的自述文件:

curl https://raw.githubusercontent.com/AFNetworking/AFNetworking/master/README.md > ADREADME.md

因为它是一个公共回购,你不需要任何凭据。请注意URL的类型:raw.githubusercontent.com/path/to/file

我最近发现了一个名为gitzip的服务,它也是开源的:

网站-http://kinolien.github.io/gitzip/

仓库-https://github.com/KinoLien/gitzip

访问上述站点,输入repo或目录URL,您可以下载单个文件或整个目录作为zip文件。

GitHub发布功能

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

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

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

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

遵循许多Git项目的约定,版本与Git标签绑定。您可以使用现有标签,也可以让版本在发布时创建标签。

输入图片描述

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

让我们谈谈CSV文件。如果您想下载CSV文件:

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

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

我希望这能有所帮助。

对于使用GitHub Enterprise的用户,您需要按照以下方案构建URL

Invoke-WebRequest http://github.mycompany.com/api/v3/repos/my-org/my-repo/contents/myfiles/file.txt -Headers @{"Authorization"="token 8d795936d2c1b2806587719b9b6456bd16549ad8"}

详情可以在这里找到

http://artisticcheese.blogspot.com/2017/04/how-to-download-individual-files-from.html

现在可以使用此google chrome扩展下载存储库中的任何文件或任何特定文件夹:

GitZip for github:链接:https://chrome.google.com/webstore/detail/gitzip-for-github/ffabmkklhbepgcgfonabamgnfafbdlkn

用法:

  1. 在任何GitHub公共存储库页面中。
  2. 只需双击您需要的项目。
  3. 点击右下角的下载按钮。
  4. 查看进度仪表板并等待浏览器触发器下载。
  5. 获取ZIP文件。

在此处输入图片描述

在此处输入图片描述

根据这一要点,您可以使用wget或cURL:

  1. 单击GitHub存储库中的文件名。
  2. 单击Raw以显示文件内容。
  3. 在浏览器中复制URL。
  4. 在命令行中,运行:

    • wget --no-check-certificate --content-disposition https://URL-from-step3/
    • curl -LJO https://URL-from-step3/

    更多:在RHEL7.6中,运行以下命令:

    • wget https://URL-from-step3/ --output-document=FILE_NAME

要从Github存储库下载文件,请使用带有原始文件链接的“curl”命令。

curl https://raw.githubusercontent.com/user/repo/filename --output filename

添加——输出选项,后跟新文件名,以将原始文件下载到新创建的文件中。

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

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


使用DownGit下载


您可以将单个文件和目录下载为zip,也可以创建下载链接。

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

或者试试这个

const https = require('https');const fs = require('fs');const DOMAIN = 'raw.githubusercontent.com';
function writeFile(data, fileName) {fs.appendFile(fileName, data.toString(), err => {if (err) {console.log('error in writing file', err);}});}
function EOF(data) {console.log('EOF');}
function getFileName(pathToFile) {var result = pathToFile.split('/');var splitLength = result.length;return result[splitLength - 1];}function getFile(branchName, username, repoName, ...pathToFile) {pathToFile.forEach(item => {const path = `/${username}/${repoName}/${branchName}/${item}`;const URL = `${DOMAIN}${path}`;const options = {hostname: DOMAIN,path: path};var fileName = getFileName(item);
https.get(options, function(res) {console.log(res.statusCode);/* if file not found */if (res.statusCode === 404) {console.log('FILE NOT FOUND');} else {/* if file found */res.on('data', data => writeFile(data, fileName));res.on('end', data => EOF(data));}}).on('error', function(res) {console.log('error in reading URL');});});}getFile('master', 'bansalAyush', 'InstagramClone', '.babelrc', 'README.md');

你可以这样使用curl

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

O表示curl下载内容
L表示curl跟随重定向

我使用了以下格式,我觉得告知路径很重要。

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

上一篇:在我的脑海里不是很完整

https://github.com/<user>/<repoROOTname>/blob/master/<path>/<filename>?raw=true

有些人说raw.github.com或原始而不是blob,但第二行对我有用,我希望能帮助其他人…

2分

您可以尝试github文件获取器,它是一个命令行工具,可从GitHub存储库下载单个文件夹或文件。

想象一个真实的场景:您正在访问以下网页并希望单独下载async子目录。

https://github.com/reduxjs/redux/tree/master/examples

对不起,不允许发布图片。

使用github-files-fetcher,您应该首先复制该页面的url,即https://github.com/reduxjs/redux/tree/master/examples/async,然后在命令行中运行以下命令:

fetcher --url=https://github.com/reduxjs/redux/tree/master/examples/async

有一个名为增强的Github的chrome扩展

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

在此处输入图片描述

2019总结

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

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

此外,我还为那些需要从GitHub下载单个文件夹/目录(而不是文件)的人发布了关于StackOverflow的问题


1. GitHub用户界面

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

2.浏览器上下文菜单

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

3.第三方工具

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

4. Subversion

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

5. cURL

  • 您需要安装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)。不过,这种方法对单个文件并不是那么有用(您更有可能将其用于下载特定文件夹,如我上面链接到的答案中所述)。
  1. 在github上,打开您要下载的文件
  2. 找到与“责备”按钮相邻的“原始”按钮
  3. 按键盘上的“Alt”,同时左键单击鼠标
  4. 该文件将以“. txt”格式自动下载(它为我做了)
  5. 手动将“. txt”扩展名更改为“. csv”扩展名

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

转到脚本并单击“Raw”

然后复制链接并使用aria2c链接下载。

例如:aria2chttps://raw.githubusercontent.com/kodamail/gscript/master/color.gsf

技巧:我想下载的文件是,https://github.com/kodamail/gscript*/blob*/master/color.gsf

只需将链接修改为https://原始.github用户内容.com/kodamail/gscript/master/color.gsf

删除斜体字文本并添加相同格式的粗体文本,它将为您提供正确的链接。

它可以与aria2c、wget或curl一起使用,我在这里使用aria2c。

我的简单方法是:

  1. 单击“原始”按钮以获取浏览器上显示的github_csv.csv的文件内容。
  2. 然后创建file.csv并在文本编辑器(如记事本)中打开
  3. 然后从网站复制文件内容并粘贴到file.csv
  4. 你的file.csvgithub_csv.csv
  1. 简单复制页面链接
  2. 在命令行类型:wget -L (exact copied link)
  3. 只需将blob替换为步骤2中的raw
  4. 输入

如果您使用npm,只需运行以下命令行,最后,它不会下载除此github文件之外的任何npm

npx config-pack https://github.com/facebook/react/blob/main/README.md

查看配置包了解更多详情

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

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

在此处输入图片描述

在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

上面命令的文档可以在这里找到。

I.如果您想下载源代码以外的. so文件,请尝试单击Download按钮,如下所示:

输入图片描述

该文件将下载tru您的浏览器。

二。如果你想下载源代码,点击Raw,进入原始…页面,输入图片描述

简单的复制/粘贴或使用curl或wget命令在您的终端中获取它。

您可以复制GitHub文件的内容,然后将其粘贴到您的文件中。简单!

简单地将wget与raw=True参数一起使用

wget "https://github.com/user/repository/blob/master/directory/file_name?raw=True" -O target_path/file_name