从githubrepodowngit下载单个文件夹或目录(代码片段)

author author     2022-12-30     791

关键词:

如何从GitHub上托管的远程Git仓库中仅下载特定文件夹或目录?

举个例子说GitHub repo住在这里:

git@github.com:foobar/Test.git

其目录结构:

Test/
    foo/ 
       a.py
       b.py
    bar/
       c.py
       d.py

我只想下载foo文件夹而不是克隆整个Test项目。

答案

2016年9月更新:社区创建了一些可以为您执行此操作的工具:


Git不支持这个,但Github通过SVN做。如果你用subversion核实你的代码,Github基本上会在后端将repo从git转换为subversion,然后提供请求的目录。

以下是使用此功能下载特定文件夹的方法。我将使用流行的JavaScript库lodash作为示例。

  1. 获取repo URL。首先,将Github仓库的URL复制到剪贴板。 github repo URL example
  2. 修改subversion的URL。我想从/docs分支下载master的文件夹,所以我将追加trunk/docs。完整的URL现在是https://github.com/lodash/lodash/trunk/docs。请参阅下面的注释,以更深入地解释为什么我们必须使用此URL格式。
  3. 下载文件夹。转到命令行并使用SVN获取文件夹。 svn checkout https://github.com/lodash/lodash/trunk/docs

您可能没有立即看到任何活动,因为Github需要30秒才能转换更大的存储库,所以请耐心等待。

完整的URL格式说明:

  • 如果您对master分支感兴趣,请改用trunk。所以完整的路径是trunk/foldername
  • 如果您对foo分支感兴趣,请改用branches/foo。完整的路径看起来像branches/foo/foldername
  • Protip:如果您愿意,可以在下载之前使用svn ls查看可用的标签和分支

就这样! Github supports more subversion features也包括对提交和推动变更的支持。

另一答案

如果你真的只是想“下载”文件夹而不是“克隆”它(用于开发),那么最简单的方法就是获取最新版本的存储库(以及其中的文件夹/文件)的副本,无需克隆整个存储库甚至首先安装git,就是通过在GitHub上访问所需的存储库/ fork / branch / commit来下载zip存档(对于任何存储库,分支,分支,提交等) (例如,http(s)://github.com/<user>/<repo>/commit/<Sha1>获取特定提交后的文件副本)并选择右上角附近的Downloads按钮。

这种存档格式不包含任何git-repo魔法,只包含跟踪文件本身(如果跟踪它们可能还有一些.gitignore文件,但你可以忽略它们:p) - 这意味着如果代码发生了变化,你想要保持最佳状态,您必须手动重新下载它,这也意味着您将无法将其用作git存储库...

不确定在这种情况下你是否正在寻找(再次,“下载”/查看vs“克隆”/开发),但它仍然有用......

另一答案

1.点击此链接http://kinolien.github.io/gitzip/ 2.要下载的Github文件夹的粘贴链接。 3.点击搜索,它将显示所有要下载的文件。 注意: - 使用搜索不需要输入令牌密钥;)..保持简单(y)

另一答案

另一个具体例子:

就像我想从网址下载'iOS Pro Geo'文件夹

https://github.com/alokc83/APRESS-Books-Source-Code-/tree /主/%20Pro%20iOS%20Geo

我可以通过这样做

svn checkout https://github.com/alokc83/APRESS-Books-Source-Code-/trunk/%20Pro%20iOS%20Geo

注意路径中的主干

编辑:(根据Tommie C的评论)

是的,使用导出而不是checkout将提供一个干净的副本,而无需额外的git存储库文件。

svn export https://github.com/alokc83/APRESS-Books-Source-Code-/trunk/%20Pro%20iOS%20Geo

编辑:如果树/主人不在网址,然后叉它,它将在分叉网址。

另一答案

这是SVN比Git更好的少数几个地方之一。

最后,我们倾向于三种选择:

  1. 使用wget从GitHub获取数据(使用原始文件视图)。
  2. 让上游项目将所需的数据子集发布为构建工件。
  3. 放弃并使用完整的结账。它在第一次构建时受到很大影响,但除非你获得大量流量,否则在以下版本中不会太麻烦。
另一答案

有一个名为githubdl的Python3 pip包可以做到这一点*:

export GIT_TOKEN=1234567890123456789012345678901234567890123
pip install githubdl
githubdl -u http://github.com/foobar/test -d foo

项目页面是here

*免责声明:我写了这个包。

另一答案

您可以简单地下载目录树:

git archive --remote git@github.com:foobar/Test.git HEAD:foo | tar xf -

但是如果你想要检查它,并且能够做出提交并将它们推回去,那么你不能这样做。

另一答案

如果您对unix命令感到满意,则不需要特殊的依赖关系或Web应用程序。您可以将repo下载为tarball并仅解压缩所需内容。

示例(fontawesome中子目录中的woff2文件):

curl -L https://api.github.com/repos/FortAwesome/Font-Awesome/tarball | tar xz --wildcards "*/web-fonts-with-css/webfonts/*.woff2" --strip-components=3
  • 有关链接格式的更多信息:https://developer.github.com/v3/repos/contents/#get-archive-link(包括如何获取zip文件或特定分支/ refs)
  • 保持路径的起始部分(*/)以匹配任何目录。 Github使用名称中的commit ref创建一个包装器目录,因此无法知道。
  • 您可能希望--strip-components与路径(前一个参数)中的斜杠(/)的数量相同。

这将下载整个tarball。如果必须避免这种情况,或者您希望对GitHub服务器感到满意,请使用其他答案中提到的SVN方法。

另一答案

只是为了放大上面的答案,从真正的GitHub存储库到本地目录的一个真实例子是:

svn ls https://github.com/rdcarp/playing-cards/trunk/PumpkinSoup.PlayingCards.Interfaces

svn export https://github.com/rdcarp/playing-cards/trunk/PumpkinSoup.PlayingCards.Interfaces  /temp/SvnExport/Washburn

有时,一个具体的例子有助于澄清提出的替代。

另一答案

我使用linux,把它放在〜/ .bashrc中,称为甚至:D $ HOME / .bashrc

git-dowloadfolder()
a="$1"
svn checkout $a/tree/master/trunk


然后刷新shell

source ~/.bashrc 

然后使用它与git-downloadfolder blablabla:D

另一答案

我们的团队编写了一个bash脚本来执行此操作,因为我们不想在我们的裸骨服务器上安装SVN。

https://github.com/ojbc/docker/blob/master/java8-karaf3/files/git-download.sh

它使用github API,可以从命令行运行,如下所示:

git-download.sh https://api.github.com/repos/ojbc/main/contents/shared/ojb-certs
另一答案

此功能有两个选项:

Option 1: Browser Extensions

Chrome ExtensionFirefox Addon

用法:

  1. 在任何GitHub repos页面中。
  2. 只需双击所需项目的空白部分即可。
  3. 单击右下角的下载按钮。
  4. 查看进度仪表板并等待浏览器触发器下载。
  5. 获取ZIP文件。

获取令牌:

  1. 单击浏览器上的GitZip Extension图标。
  2. 点击“Get Token”旁边的“Normal”或“Private”链接。
  3. 在Github auth页面上授权GitZip权限。
  4. 回到开头的回购页面。
  5. 继续使用。

Option 2: Github gh-page

http://kinolien.github.io/gitzip使用GitHub API和JSZip,FileSaver.js库。

步骤1:将github url输入到右上角的字段。 步骤2:按Enter键或直接单击下载下载zip或单击搜索查看子文件夹和文件列表。 步骤3:单击“下载Zip文件”或“获取文件”按钮以获取文件。

在大多数情况下,它工作正常,但该文件夹包含超过1,000个文件,因为Github Trees API限制。 (指Github API#Contents

它还可以支持私人/公共回购和升级速率限制,如果您有GitHub帐户并在此站点中使用“获取令牌”链接。

另一答案

我使用CentOS 7服务器,我没有root访问权限,也没有git,svn等(也不想!)所以制作了一个python脚本来下载任何github文件夹:https://github.com/andr

从github下载单个文件(代码片段)

...。您是否有任何提示或技巧如何获取存储库中单个文件的下载URL?我不想要显示原始文件的URL;在二进制文件的情况下它是无用的。http://support.github.com/discussions/feature-requests/41-download-single-file甚至可以将GitHub用作“下载服务器”... 查看详情

如何使用命令行从私有 github 存储库下载单个原始文件?

】如何使用命令行从私有github存储库下载单个原始文件?【英文标题】:HowcanIdownloadasinglerawfilefromaprivategithubrepousingthecommandline?【发布时间】:2013-08-1004:44:19【问题描述】:在CI服务器上,我想获取我们在Github上维护的配置文件... 查看详情

从单个ftp服务器下载多线程/异步(代码片段)

我需要从单个服务器中的单个文件夹下载许多文件,因此我正在寻找一种更快速的方法。经过一点点的阅读后,似乎多线程或异步方法都可行,但我似乎无法使用这两种方法。我正在使用的异步方法如下。这有效,即没有错误,... 查看详情

使用 Octokit (c#, .net) 从大型 github 企业存储库中高效下载单个文件

】使用Octokit(c#,.net)从大型github企业存储库中高效下载单个文件【英文标题】:Downloadingasinglefile,fromalargegithubenterpriserepo,efficiently,withOctokit(c#,.net)【发布时间】:2018-08-2921:28:22【问题描述】:我正在尝试使用OctoKit从github企业下载... 查看详情

下载单个文件[重复]

】下载单个文件[重复]【英文标题】:Downloadsinglefile[duplicate]【发布时间】:2011-03-1221:13:51【问题描述】:如何从SVN存储库下载单个文件?例如:svncohttp://server.com/svn/trunk/test.filetest.filesvn:URL\'http://server.com/svn/trunk/test.filetest.file\'re... 查看详情

从远程 git 存储库获取单个文件

...题描述】:有没有办法用Java以编程方式从远程git存储库下载单个文件?我更喜欢使用尽可能少的带宽的解决方案,最好只下载单个文件。我不需要浏览存储库,我已经有了文件的路径。我更喜欢不依赖其他应用程序的解决方案... 查看详情

从远程mercurial存储库获取单个文件(代码片段)

有没有办法以编程方式从Java中的远程Mercurial存储库下载单个文件?我问了一个verysimilarquestionregardinggit;现在我希望我也可以用mercurial做类似的事情。我更喜欢使用尽可能少带宽的解决方案,最好只下载该单个文件。我不需要浏览... 查看详情

在单个请求中下载多个文件 (jQuery/Python)

】在单个请求中下载多个文件(jQuery/Python)【英文标题】:DownloadMultipleFilesinaSingleRequest(jQuery/Python)【发布时间】:2011-07-2608:28:46【问题描述】:我需要为用户创建一种打开网页的方式,从表单中的复选框列表中进行选择,然后在... 查看详情

如何在nodejs中的单个服务调用中上传和下载文件?

】如何在nodejs中的单个服务调用中上传和下载文件?【英文标题】:Howtouploadanddownloadafileinasingleservicecallinnodejs?【发布时间】:2018-10-2915:54:51【问题描述】:我可以通过邮递员上传文件并在两个不同的服务中从服务器下载文件..... 查看详情

markdown从私有github仓库下载单个文件。您需要一个访问令牌,如本github帮助文章中所述:https://help.github(代码片段)

查看详情

如何从 Java 中的 HttpResponse 中获取单个表单字段并将其写入文件?

...间】:2018-01-1614:25:03【问题描述】:我正在调用客户端的下载服务,该服务会发回MIME数据并尝试保存zip文件。该服务不仅返回文件本身,还返回其他几个MIME字段。因此,当我使 查看详情

如何从 Firebase 存储下载整个文件夹?

】如何从Firebase存储下载整个文件夹?【英文标题】:HowtodownloadentirefolderfromFirebaseStorage?【发布时间】:2017-05-1814:20:27【问题描述】:我想从Firebase存储中下载整个文件夹。我可以使用DownloadURL下载单个文件,如下所示,但它不适... 查看详情

如何从 GitHub 下载单个提交差异?

】如何从GitHub下载单个提交差异?【英文标题】:Howtodownloadasinglecommit-difffromGitHub?【发布时间】:2014-03-2103:50:13【问题描述】:我想通过Web界面从GitHub获得一个提交(我们称之为$SHA)。例如:$gitclonehttp://github.com/foo/bar$cdbar$gitfor... 查看详情

Azure PHP SDK:在单个 zip 文件中下载容器的所有 blob

】AzurePHPSDK:在单个zip文件中下载容器的所有blob【英文标题】:AzurePHPSDK:downloadcontainer\'sallblobinasinglezipfile【发布时间】:2018-03-0114:43:56【问题描述】:我想将指定容器中的所有blob下载为zip文件。有没有办法直接从Azure下载它的zi... 查看详情

从 Nexus3 下载单个/最新资产(JAR)

】从Nexus3下载单个/最新资产(JAR)【英文标题】:Downloadsingle/latestasset(JAR)fromNexus3【发布时间】:2018-07-2513:52:06【问题描述】:我正在尝试从我的本地Nexus存储库下载最新/最新的资产(JAR)。我正在使用NexusSwaggerUI。它有一个GET方... 查看详情

如何在 Rails 5.x.x 应用程序中以 Zip 格式从 S3 下载多个文件?

】如何在Rails5.x.x应用程序中以Zip格式从S3下载多个文件?【英文标题】:HowtodownloadmultiplefilesfromS3asZipformatinRails5.x.xapp?【发布时间】:2017-06-2208:19:29【问题描述】:我正在实现允许用户从S3下载单个文件或多个文件的功能。单个... 查看详情

分享一个fileutil工具类,基本满足web开发中的文件上传,单个文件下载,多个文件下载的需求

...tFile对象中,通过getInputStream();方法即可获取。2.单个文件下载方法downloadFile(StringfileName,StringfilePath,HttpServletResponseresponse)throwsException参数解释fileName:下载后文件的文件名filePath:下载文件在服务器的路径位置response:响应体3.多个文... 查看详情

使用 gsutil 从 CSV 下载所有行

...每个文件,但这不是很有效。另一种选择是使用下载整个文件夹gsutil-mcp-rgs://bucket/fol 查看详情