ChatGPT解决这个技术问题 Extra ChatGPT

从 GitHub 下载单个文件

从 GitHub 存储库下载单个文件有哪些技巧?

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

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

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

如果我们决定切换到谷歌代码,那里是否有提到的功能?

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

对于 GitLab,请参阅 stackoverflow.com/a/51993087/6309
这不适用于所有人,但如果您使用 python pandas,您可以简单地执行以下操作(也适用于大文件):单击“查看原始文件”,然后从浏览器复制 url,然后简单地执行以下操作:df = pd.read_csv( “raw.githubusercontent.com/t-davidson/…”)
为 Chrome 尝试 Gitzip for github
这是最简单的命令行答案当然unix.stackexchange.com/questions/228412/…。使用 wget full_url_to_raw_file_on_github
654 人提出了这个问题(赞成),这意味着 GitHub 有一个需要解决的主要 UI 问题。点击旁边的复选框并选择“下载”。哦,不存在吗?多么荒谬。 (哦,另外,考虑到有人来到这个页面寻找答案的 962,000 次!为一个功能获得一百万次页面浏览量会很好,错误?不)

b
bearfriend

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


复制 URL,而不是“另存为”。那是文件的URL。您现在可以使用任何使用 URL 下载的工具来下载它:wget、您的浏览器等。
@MattParkins 我刚刚尝试过,我认为它现在可以用于大文件(即使是带有“我们现在无法显示这么大的文件”警告的二进制文件)
这适用于单个 C# 文件。也许github应该添加另一个下载按钮。右键单击按钮不是很直观。
非常适合大多数源代码文件,因为它们很少超过大小阈值。
只是提醒。复制原始文件的 URL,即在单击原始选项之后。
C
Community

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

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


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

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

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

https://cloud.githubusercontent.com/assets/5456665/17822364/940bded8-6678-11e6-9603-b84d75bccec1.gif

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

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


方便的工具,谢谢,我正在使用它来下载 CAD .dxf 文件🙂这是供参考的 repo:github.com/minhaskamal/downgit
是否可以下载原始文件而不是压缩文件?
我非常想要原始下载功能,所以我自己实现了它:P github.com/MinhasKamal/DownGit/pull/50
u
user3325137William

根据this gist,您可以使用 wget 或 cURL:

单击 GitHub 存储库中的文件名。单击 Raw 以显示文件内容。在浏览器中复制 URL。在命令行中,运行: 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 存储库中的文件并单击 Raw 按钮后,我使用了 wget 后跟我想要的 C 源文件的原始路径。在我的 Raspberry Pi 3 上使用 Raspbian 像冠军一样工作。
我玩游戏有点晚了,但这对我来说非常有效。查看原始内容然后右键单击下载不适用于我的情况,因为我需要特定格式的文件,而我的计算机没有提供这种格式。此答案中的命令按原样下载所有内容。
N
Neuron

您可以使用 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 令牌,follow these instructions

我也把它写成a gist


这个不错,但不幸的是它只支持最大 1 MiB 的文件。
如果在程序中执行此操作,请确保设置了 User-Agent。
你能举一些路径的例子吗?如果您的 repo 是 my-repo 并且您想要获取的文件位于 x/y/z.txt 那么 URL 将是......很难弄清楚 /owner/repo/ 应该由我填写。谢谢。
这工作正常,但有一个缺点。您并不总是最新版本的文件。尝试对文件进行修改,不要等待太多并尝试使用此方法检索文件。您将只获得以前的版本。
支持 -O 标志,因为这是从公共存储库下载时最简单的
M
Mark

您可以这样使用 curl

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

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


J
Joe Leo

这现在可以在 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 就是一个很好的例子。


一些文件托管在 raw.githubusercontent.com 上
有时它是 raw2.github.com 仅供参考
C
Cam Song

GitHub Mate 让单个文件下载变得毫不费力,只需点击图标即可下载,目前仅适用于 Chrome。

https://lh4.googleusercontent.com/pmnJq0W-odK3qaoFydvC2a9QZcFvVsldrS51-BCJsNj4PL1a0N24RDN6eK1dLV7Mu5esuR54PQ=s640-h400-e365-rw


@jcollum 刚刚检查过,对我有用。你能确定你使用的是最新版本吗?或让我知道错误。很高兴能帮助你使它工作。
我使用的是最新版本的 Chrome 34.0.1847.116,这肯定行不通。您使用什么操作系统?我在 OS X Mavericks 上。
我在 Windows 7 和 OS X Mavericks 中的 Chrome 34 上进行了测试,两者都可以工作。如果不工作很奇怪吧?请注意,该文件夹不可下载。也许你可以在不同的机器上试试。
好的,该方法仅在您具有 chrome 扩展程序时才有效。 chrome.google.com/webstore/detail/github-mate/…
从此视图中,只需右键单击并另存为文件
j
jabacchetta

2019年总结

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

下面总结了六个选项。对于那些喜欢更实际的解释的人,我制作了一个 YouTube 视频:Download Individual Files and Folders from GitHub

此外,我还为需要从 GitHub 下载单个文件夹/目录(而不是文件)的用户发布了 similar answer on StackOverflow

1. GitHub 用户界面

大多数图像上都有一个下载按钮。

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

2. 浏览器上下文菜单

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

3. 第三方工具

有多种浏览器扩展程序和 Web 应用程序可以处理这个问题,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 /解析.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)。但是,此方法对于单个文件并不是那么有用(您更有可能使用它来下载特定文件夹,如我上面链接的答案中所述)。


我的理解是下载按钮不会下载整个回购......我可能是错的。这是一个示例:github.com/googleapis/google-api-php-client 如果您下载存储库,您将不会获得示例目录;你必须改变分支才能做到这一点。
@albert 很好。这实际上是因为他们专门排除了 .gitattributes 文件中的特定文件夹/文件:github.com/googleapis/google-api-php-client/blob/master/…
在 cURL 示例中,可以将 -o parse.js 替换为 -O 以写入与远程文件同名的文件。
A
Abraham Murciano Benzadon

有一个名为 Enhanced Github 的 chrome 扩展程序

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

https://i.stack.imgur.com/mF2EL.png


这比 Github Mate 更好,仅仅是因为它不要求“阅读所有浏览历史”权限!请记住右键单击下载按钮>将链接另存为。
必须从您的 GitHub 帐户添加令牌。
这使用安全吗?
@Ariansaputra 我已经使用它很长时间了,从未遇到任何问题。它应该是安全的。我不明白为什么它不会
D
DJJ

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

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

有关详细信息,请参阅此 website


您可以下载任何文件,而不仅仅是 .zip。
G
Gray

要跟进 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


你能举一些路径的例子吗?如果您的 repo 是 my-repo 并且您想要获取的文件位于 x/y/z.txt 那么 URL 将是...谢谢
@格雷https://your_domain/api/v3/repos/{owner}/my-repo/contents/x/y/z.txt
如果我想从分支下载文件?我该怎么做?
D
Darkstar Dream

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

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

https://i.stack.imgur.com/TMP4X.png


A
Audrey Mengue

在github上,打开你要下载的文件找到“Blame”按钮旁边的“Raw”按钮按下键盘上的“Alt”,同时鼠标左键单击文件将自动下载到“. txt”格式(对我有用)手动将“.txt”扩展名更改为“.csv”扩展名

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


P
Penny Liu

简单地复制页面链接 在命令行中输入: wget -L (精确复制的链接) 只需在步骤 2 中将 blob 替换为 raw 输入


我收到“zsh:找不到命令:wget”
@BrendanMetcalfe 是因为你没有包 wget。先安装
K
Kevin Delord

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

例如下载 AFNetworking 的 README:

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

由于它是一个公共回购,您不需要任何凭据。请注意网址的种类:raw.githubusercontent.com/path/to/file


此代码似乎不是 R 或终端。将在哪里使用此代码?
它实际上是一个基于 curl 的终端命令和带有 > 的输出重定向
s
saadi123

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

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

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

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

我希望这会有所帮助。


C
Community

GitHub 发布功能

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

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

我们很高兴地宣布发布,这是一个将软件交付给最终用户的工作流程。发布是一流的对象,带有变更日志和二进制资产,提供了 Git 工件之外的完整项目历史。版本附有版本说明和下载软件或源代码的链接。遵循许多 Git 项目的约定,发布与 Git 标签相关联。您可以使用现有标签,也可以让版本在发布时创建标签。

https://i.stack.imgur.com/XKwa6.jpg


是的!这是最简单的解决方案,可以直接从您的浏览器中完成! 1. 从您的存储库主页中,选择 releases 2. 单击提交编号。 3.找到你想要的文件,点击三个点...,然后选择View file 4.点击View raw下载文件!!!
G
George

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

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

添加 --output 选项后跟新文件名以将原始文件下载到新创建的文件中。


F
Franz Holzinger

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


这将保存 github 页面的 HTML 文件,其中包括文件周围的 github 包装器。
@Gregor - 仅供参考,它不应该,至少对于文本页面。如果有疑问,左键单击“原始”图标。这应该在浏览器中打开文本文件,没有任何 HTML。现在 rt-单击页面上的任意位置,然后执行“另存为...”。 (或者做全选/复制,然后粘贴到任何你想要的地方)
P
Peter Mortensen

您链接到的页面回答了第一个问题。 GitHub 还有一个下载工具,用于发布版本等内容。 Google Code 根本没有 Git。刚开始,GitHub、Google Code 和 SourceForge 都是免费托管。 SourceForge 可能仍然做 CVS。


a
avi

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

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

回购 - https://github.com/KinoLien/gitzip

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


但是我如何只从该存储库下载 jszip.min.js巨魔脸
在 github 中打开文件,然后转到 raw。您应该会看到该文件的源代码,然后您可以使用浏览器右键单击鼠标下载它并另存为。这个对我有用。
N
Natesh bhat

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

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

用法 :

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

https://i.stack.imgur.com/vzxOd.png

https://i.stack.imgur.com/xifhQ.png


P
Prahalad Gaggar

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

git file

raw


有时原始 url 是这样的 (raw.githubusercontent.com):raw.githubusercontent.com/warpech/jquery-handsontable/master/…
e
estani

如果您碰巧使用 curl 和 firefox... 您可以使用 cliget 插件,它会生成包含所有身份验证机制(又名 cookie)的 curl 调用。

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


K
Krishnaap

转到脚本并单击“原始”

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

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

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

只需将链接修改为 https://raw.githubusercontent.com/kodamail/gscript/master/color.gsf

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

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


M
Madhurananda Pahar

我的简单方法是:

单击“原始”按钮以获取浏览器上显示的 github_csv.csv 的文件内容。然后创建file.csv并在记事本等文本编辑器中打开然后从网站复制文件内容并将其粘贴到file.csv你的file.csv是github_csv.csv


F
Freddie

在 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

Documentation for the above command can be found here.


G
Gray

在“桌面克隆”正下方的右侧,它显示“下载 Zip 文件” 下载 Zip 文件 提取文件


有什么方法可以让您拥有 lfs 文件内容?
G
Gregory Suvalian

对于使用 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