从GitHub仓库下载单个文件夹或目录

时间:2011-08-18 10:33:30

标签: git file github directory repository

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

假设示例GitHub repo住在这里:

git@github.com:foobar/Test.git

其目录结构:

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

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

42 个答案:

答案 0 :(得分:798)

2016年9月更新:社区创建了一些可以为您完成此任务的工具:


Git不支持此功能,但Github通过SVN支持。如果你用subversion签出你的代码,Github将在后端基本上将repo从git转换为subversion,然后提供请求的目录。

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

  1. 获取回购网址。首先,将Github仓库的URL复制到剪贴板。 github repo URL example

  2. 修改subversion的网址。我想从/docs分支下载master的文件夹,因此我会附加trunk/docs。完整网址现在为https://github.com/lodash/lodash/trunk/docs。请参阅下面的说明,以更深入地解释我们必须使用此URL格式的原因。

  3. 下载文件夹。转到命令行并使用SVN获取文件夹。 svn checkout https://github.com/lodash/lodash/trunk/docs

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

      

    完整网址格式说明:

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

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

答案 1 :(得分:447)

此功能的两个选项:

选项1:浏览器扩展

  

Chrome ExtensionFirefox Addon

用法:

  1. 在任何GitHub回购页面中。
  2. 只需双击您需要的物品。
  3. 点击右下方的下载按钮。
  4. 查看进度仪表板并等待浏览器触发器下载。
  5. 获取ZIP文件。
  6. 获取令牌:

    1. 点击浏览器上的GitZip Extension图标。
    2. 点击“Get Token”旁边的“Normal”或“Private”链接。
    3. 在Github身份验证页面上授权GitZip权限。
    4. 回到开头的回购页面。
    5. 继续使用。
    6. 选项2:Github gh-page

        

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

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

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

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

答案 2 :(得分:404)

转到DownGit>输入您的网址>下载!

现在,您可以直接下载或为{{3提供的任何GitHub公共目录或文件(特别大的文件)创建 DOWNLOAD LINK }}!这是一个简单的演示 -

DownGit

您还可以配置下载文件的属性 - DownGit

答案 3 :(得分:151)

如果您有svn,则可以使用svn export执行此操作:

svn export https://github.com/foobar/Test.git/trunk/foo

请注意网址格式:

  • 基本网址为https://github.com/
  • 最后附加
  • /trunk

在运行svn export之前,最好先验证目录的内容:

svn ls https://github.com/foobar/Test.git/trunk/foo

答案 4 :(得分:62)

对于Generic git Repo:

如果您要下载文件,而不是使用历史记录克隆存储库,则可以使用 git-archive 执行此操作。

git-archive 制作git存储库的压缩zip或tar存档。一些让它变得特别的东西:

  1. 您可以选择要存档的git存储库中的哪些文件或目录。
  2. 它不归档.git/文件夹,也不归档运行的存储库中任何未跟踪的文件。
  3. 您可以归档特定的分支,标记或提交。使用git管理的项目通常使用它来生成项目版本的档案(测试版,发行版,2.0版等)供用户下载。
  4. 使用ssh从您连接到的远程仓库创建docs/usage目录的存档的示例:

    # in terminal
    $ git archive --format tar --remote ssh://server.org/path/to/git HEAD docs/usage > /tmp/usage_docs.tgz
    

    this blog postgit documentation中的详细信息。

    关于GitHub Repos的注意事项:

    GitHub doesn't allow git-archive access。 ☹️

答案 5 :(得分:34)

我创建了一个名为GitHubFolderDownloader的开源项目。它允许您下载存储库的单个文件夹,而无需克隆或下载整个存储库。

答案 6 :(得分:30)

其他答案没有错,但我只是想我第一次分享那些在这个过程中徘徊的人的分步说明。

如何从github存储库(Mac OS X)下载单个文件夹:

  

〜要打开终端,只需单击聚光灯并键入终端然后按Enter键

  1. 在Mac上你可能已经有了SVN(只测试打开的终端和 输入" svn" " svn" 〜没有引号?)
  2. 在Github上:通过单击仓库中的特定文件夹名称找到git文件夹(而不是仓库)的Github路径
  3. 从浏览器的地址栏复制路径
  4. 打开终端并输入: svn export
  5. 接下来粘贴地址(例如): 的 https://github.com/mingsai/Sample-Code/tree/master/HeadsUpUI
  6. 替换字词: tree / master
  7. trunk
  8. 这个词
  9. 输入文件的目标文件夹(在本例中,我 将目标文件夹存储在Downloads文件夹中 当前用户)
  10. 这里的空格只是空格键而不是单词(空格)〜/ Downloads / HeadsUpUI
  11. 最终终端命令显示下载的完整命令  文件夹(将地址与步骤5进行比较) svn export  https://github.com/mingsai/Sample-Code/trunk/HeadsUpUI  〜/下载/ HeadsUpUI
  12. BTW - 如果您使用的是Windows或其他平台,可以在http://subversion.apache.org

    找到subversion(svn)的二进制下载
      

    〜如果您想要签出文件夹而不是简单地下载它,请尝试使用svn帮助(tldr:将导出替换为结帐

    <强>更新

    关于恢复中断下载/结账的评论。我会尝试运行svn cleanup后跟svn update。请搜索SO以获取其他选项。

答案 7 :(得分:22)

无论是谁正在处理特定文件夹,他都需要克隆该特定文件夹本身,请按照以下步骤使用稀疏结帐。

  1. 创建目录。

  2. 初始化Git存储库。 (git init

  3. 启用稀疏结帐。 (git config core.sparsecheckout true

  4. 告诉Git您想要哪些目录(echo 2015 / brand / May(请参阅您要处理的文件夹)&gt;&gt; .git/info/sparse-checkout

  5. 添加远程(git remote add -f origin https://jafartke.com/mkt-imdev/DVM.git

  6. 获取文件(git pull origin master

答案 8 :(得分:15)

你不能;与Subversion不同的是,每个子目录都可以单独检出,Git在整个存储库的基础上运行。

对于需要更细粒度访问的项目,您可以使用子模块 - 每个子模块都是一个单独的Git项目,因此可以单独克隆。

可以想象Git前端(例如GitHub的web界面或gitweb)可以选择提供一个界面供您提取给定的文件夹,但据我所知,他们都没有这样做(虽然他们确实让你下载单个文件,因此如果文件夹中没有太多文件,那么这是一个选项)

编辑 - GitHub实际上通过SVN提供访问权限,这样您就可以执行此操作(根据评论)。有关如何执行此操作的最新说明,请参阅https://github.com/blog/1438-improved-svn-here-to-stay-old-svn-going-away

答案 9 :(得分:13)

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

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

不确定在这种情况下你是否正在寻找(再次,“下载”/ view vs“clone”/ develop),但它仍然有用......

答案 10 :(得分:13)

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

答案 11 :(得分:9)

另一个具体的例子:

就像我想从网址

下载'iOS Pro Geo'文件夹一样

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

我可以通过

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

注意路径中的 trunk

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

是的,使用导出而不是结帐可以提供干净的副本而无需额外的git存储库文件。

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

编辑:如果树/ master不在url中,那么将它分叉,它将在Forked网址中。

答案 12 :(得分:6)

这是SVN优于Git的少数几个地方之一。

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

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

答案 13 :(得分:6)

这就是我用 git v2.25.0 做的,也用 v2.26.2 测试过。此技巧不适用于 v2.30.1

TLDR

git clone --no-checkout --filter=tree:0 https://github.com/opencv/opencv
cd opencv

# requires git 2.25.x to 2.26.2
git sparse-checkout set data/haarcascades

您可以使用 Docker 来避免安装特定版本的 git

git clone --no-checkout --filter=tree:0 https://github.com/opencv/opencv
cd opencv

# requires git 2.25.x to 2.26.2
docker run --rm -it -v $PWD/:/code/ --workdir=/code/ alpine/git:v2.26.2 sparse-checkout set data/haarcascades

完整解决方案

# bare minimum clone of opencv
$ git clone --no-checkout --filter=tree:0 https://github.com/opencv/opencv
...
Resolving deltas: 100% (529/529), done.

# Downloaded only ~7.3MB , takes ~3 seconds
# du = disk usage, -s = summary, -h = human-readable
$ du -sh opencv
7.3M    opencv/

# Set target dir
$ cd opencv
$ git sparse-checkout set data/haarcascades
...
Updating files: 100% (17/17), done.
# Takes ~10 seconds, depending on your specs

# View downloaded files
$ du -sh data/haarcascades/
9.4M    data/haarcascades/
$ ls data/haarcascades/
haarcascade_eye.xml                      haarcascade_frontalface_alt2.xml      haarcascade_licence_plate_rus_16stages.xml  haarcascade_smile.xml
haarcascade_eye_tree_eyeglasses.xml      haarcascade_frontalface_alt_tree.xml  haarcascade_lowerbody.xml                   haarcascade_upperbody.xml
haarcascade_frontalcatface.xml           haarcascade_frontalface_default.xml   haarcascade_profileface.xml
haarcascade_frontalcatface_extended.xml  haarcascade_fullbody.xml              haarcascade_righteye_2splits.xml
haarcascade_frontalface_alt.xml          haarcascade_lefteye_2splits.xml       haarcascade_russian_plate_number.xml

参考文献

答案 14 :(得分:5)

如果您对Unix命令感到满意,则不需要特殊的依赖项或Web应用程序。您可以将压缩包下载为tar包,然后仅解压缩所需的包。

示例(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文件或特定的分支机构/引用)
  • 保留路径的起始部分(*/)以匹配任何目录。 Github创建一个包装目录,名称中包含commit ref,因此无法知道它。
  • 您可能希望--strip-components与路径中的斜杠(/)相同(上一个参数)。

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

答案 15 :(得分:5)

有一个名为githubdl的Python3 pip包可以执行此操作*:

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

项目页面为here

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

答案 16 :(得分:5)

git sparse-checkout

Git 2.25.0包括一个新的实验性git sparse-checkout命令,该命令使现有功能易于使用,并为大型存储库带来了一些重要的性能优势。 (The GitHub Blog

current version的示例:

git clone --filter=blob:none --sparse https://github.com/git/git.git
cd git
git sparse-checkout init --cone
git sparse-checkout add t

最值得注意的

  • --sparse仅将git存储库的顶级目录文件检出到工作副本中
  • git sparse-checkout add t增量添加/签出t的{​​{1}}子文件夹

其他元素

  • git sparse-checkout init做了一些准备工作以启用部分签出
  • git通过仅下载必要的git对象来优化数据获取(有关更多信息,请查看partial clone feature
  • --cone还通过应用更多受限制的文件包含模式来提高性能

GitHub状态

虽然在少数几个存储库上启用了此功能,但GitHub仍在内部评估此功能[...]。随着功能的稳定和成熟,我们将为您提供最新的进展。 (docs

答案 17 :(得分:4)

为了放大上面的答案,从真正的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

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

答案 18 :(得分:4)

只需走5个步骤

1)从here下载 SVN
2)打开 CMD ,然后转到 SVN bin目录,如下所示:

cd %ProgramFiles%\SlikSvn\bin

3)假设我要下载此目录URL
https://github.com/ZeBobo5/Vlc.DotNet/tree/develop/src/Samples

4)现在更换
tree/develop
or
tree/master
trunk

5)现在触发这最后一条命令,将文件夹下载到同一目录中。
svn export https://github.com/ZeBobo5/Vlc.DotNet/trunk/src/Samples

答案 19 :(得分:4)

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

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

}

然后用

刷新shell
source ~/.bashrc 

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

答案 20 :(得分:4)

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

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

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

答案 21 :(得分:4)

无论出于何种原因,svn解决方案都不适合我,并且由于我不需要svn来解决其他任何问题,因此花时间尝试制作解决方案没有任何意义,因此我使用已经拥有的工具寻找一种简单的解决方案。该脚本仅使用curlawk来下载GitHub目录中描述为"/:user:repo/contents/:path"的所有文件。

对GitHub REST API的调用的返回正文 "GET /repos/:user:repo/contents/:path"命令返回一个对象,该对象包含目录中每个文件的"download_url"链接。

此命令行脚本使用curl调用REST API,并通过AWK发送结果,该过滤器过滤掉除“ download_url”行以外的所有行,从链接中删除引号和逗号,然后下载链接使用另一个通话来卷曲。

curl -s https://api.github.com/repos/:user/:repo/contents/:path | awk \
     '/download_url/ { gsub("\"|,", "", $2); system("curl -O "$2"); }'

答案 22 :(得分:3)

您可以将 ghget 与从地址栏中复制的任何网址一起使用:

ghget https://github.com/fivethirtyeight/data/tree/master/airline-safety

这是一个自包含的便携式 shell 脚本,不使用 SVN(在大型存储库中对我不起作用)。它也不使用 API,因此它不需要令牌并且不受速率限制。

免责声明:我做到了。

答案 23 :(得分:3)

在我的情况下,所有答案均无济于事。如果您正在为Windows开发,则可能没有svn。在许多情况下,不能指望用户安装Git或由于其他原因不想下载整个存储库。回答了这个问题的一些人,例如Willem van Ketwich和Aztack,为完成这项任务提供了工具。但是,如果该工具不是针对您使用的语言编写的,或者您不想安装第三方库,则这些工具将无效。

但是,有一种更简单的方法。 GitHub有一个API,可让您下载单个文件或整个目录的内容using GET requests。您可以使用https://api.github.com/repos/:owner/:repo_name/contents/:path访问目录,该目录返回一个JSON对象,枚举该目录中的所有文件。枚举中包含指向文件原始内容download_url参数的链接。然后可以使用该URL下载该文件。

这是一个两步过程,需要能够发出GET请求,但这可以在几乎任何语言,任何平台上实现。可以用来获取文件或目录。

答案 24 :(得分:3)

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

用法很简单,只需从github项目中复制相关部分,假设项目为https://github.com/MaxCDN/php-maxcdn/,并且您想要一个仅包含某些源文件的文件夹,那么您需要执行以下操作:

$ python gdownload.py "/MaxCDN/php-maxcdn/tree/master/src" /my/target/dir/
(如果不存在,将创建目标文件夹)

它需要lxml库,可以与easy_install lxml一起安装 如果您没有root访问权限(例如我),您可以使用以下内容在.pydistutils.py目录中创建$HOME文件: [install] user=1 easy_install lxml将起作用(参考:https://stackoverflow.com/a/33464597/591257)。

答案 25 :(得分:3)

我们的团队编写了一个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

答案 26 :(得分:2)

要独一无二, 我必须说,您也可以下载 Github 文件夹,而无需 svn、git 或任何 apiGithub 支持 RAW 链接,您可以利用它来仅下载您需要的文件和文件夹。

我注意到了很多事情。以下是我的研究合集:

机制

  • 从网页中抓取所有超链接 <a> 并获取其 href="value"

  • 如果 href 值包含“/tree/master/”或“/tree/main/”,则它是文件夹链接: https://github.com/graysuit/GithubFolderDownloader /tree/main/ GithubFolderDownloader

  • 否则,如果 href 值包含“/blob/master/”或“/blob/main/”,则它是文件链接: https://github.com/graysuit/GithubFolderDownloader /blob/main/ GithubFolderDownloader.sln

  • 之后,将“github.com”替换为“raw.githubusercontent.com”并删除“/blob/”从文件 : https://raw.githubusercontent.com/graysuit/GithubFolderDownloader/main/GithubFolderDownloader.sln

  • 它将成为原始链接。现在你可以下载了。

工具

在上述研究的基础上,我在C#中创建了一个可以抓取文件夹的极简工具。 graysuit/GithubFolderDownloader

注意:我是作者。如果有任何遗漏或不清楚的地方,您可以发表评论。

答案 27 :(得分:2)

2019摘要

有多种方法可以处理此问题,具体取决于您要手动还是以编程方式进行。

以下总结了四个选项。对于那些更喜欢动手做解释的人,我整理了一个YouTube视频:Download Individual Files and Folders from GitHub

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


1。 GitHub用户界面

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

2。第三方工具

  • 有多种浏览器扩展程序和Web应用程序可以处理此问题,其中DownGit是其中之一。只需将GitHub URL粘贴到文件夹(例如https://github.com/babel/babel-eslint/tree/master/lib),然后按“下载”按钮即可。

3。颠覆

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

4。 GitHub API

  • 这是您要以编程方式完成此任务所需的解决方案。这实际上是DownGit在后台使用的功能。使用GitHub's REST API,编写一个向内容端点发出GET请求的脚本。可以按以下方式构造端点:https://api.github.com/repos/:owner/:repo/contents/:path。替换占位符后,示例端点为:https://api.github.com/repos/babel/babel-eslint/contents/lib。这将为您提供该文件夹中存在的所有内容的JSON数据。数据具有您所需的一切,包括内容是否是文件夹或文件,下载URL(如果是文件)以及API端点(如果是文件夹)(以便您可以获取该文件夹的数据)。使用此数据,脚本可以递归地遍历目标文件夹中的所有内容,为嵌套文件夹创建文件夹,并下载每个文件夹的所有文件。查看DownGit's code以获得灵感。

答案 28 :(得分:1)

如果你需要以编程方式进行,并且你不想依赖SVN,你可以使用GitHub API递归下载所有内容。为了灵感,这里是我的红宝石要点:https://gist.github.com/cvengros/b2a7e82f66519d423b6f

答案 29 :(得分:1)

git clone --filter来自Git 2.19

此选项实际上将跳过从服务器获取不需要的对象:

git clone --depth 1 --no-checkout --filter=blob:none \
  "file://$(pwd)/server_repo" local_repo
cd local_repo
git checkout master -- mydir/

服务器应配置为:

git config --local uploadpack.allowfilter 1
git config --local uploadpack.allowanysha1inwant 1

对Git远程协议进行了扩展,以支持v2.19.0中的此功能,但当时不支持服务器。但是它已经可以在本地测试。

我已经在How do I clone a subdirectory only of a Git repository?

上进行了详细介绍。

答案 30 :(得分:1)

试试看。

https://github.com/twfb/git-directory-download

usage: gitd [-h] [-u URL] [-r] [-p] [--proxy PROXY]

optional arguments:
  -h, --help         show this help message and exit
  -u URL, --url URL  github url, split by ",", example: "https://x, http://y"
  -r, --raw          download from raw url
  -p, --parse        download by parsing html
  --proxy PROXY      proxy config, example "socks5://127.0.0.1:7891"

Example:
  1. download by raw url: gitd -u "https://github.com/twfb/git-directory-download"
  2. download by raw url: gitd -r -u "https://github.com/twfb/git-directory-download"
  3. dowmload by parsing: gitd -p -u "https://github.com/twfb/git-directory-download"
  4. download by raw url with proxy: gitd -r -u "https://github.com/twfb/git-directory-download" --proxy "socks5://127.0.0.1:7891"

答案 31 :(得分:1)

通过将github替换为url中的githubbox来打开codesandbox的仓库,并在codesandbox上转到文件菜单并将其导出为zip。

对于以下回购: https://github.com/geist-org/react/tree/master/examples/custom-themes

输入以下网址: https:// githubbox .com / geist-org / react / tree / master / examples / custom-themes

在codesandbox中,转到文件菜单并将其导出为Zip。

答案 32 :(得分:1)

您可以尝试使用chrome的gitzip扩展名,它超级易用,并且也帮助我下载了很多文件夹!

答案 33 :(得分:1)

最简单的方法是使用fetcher

首先,使用以下命令安装fetcher:

npm install -g github-files-fetcher

然后您可以下载文件或文件夹及其URL:

fetcher --url = resource_url --out = output_directory

例如:

fetcher --url =“ https://github.com/Gyumeijie/github-files-fetcher/blob/master/CHANGELOG.md” --out = / tmp

答案 34 :(得分:0)

使用此功能,第一个参数是文件夹的url,第二个参数是将文件夹下载到的位置:

function github-dir() {
    svn export "$(sed 's/tree\/master/trunk/' <<< "$1")" "$2"  
}

答案 35 :(得分:0)

要下载的目录中:

git init
git remote add origin -f repoUrl // folder url
touch .git/info/sparse-checkout
git pull origin master

仅4行代码

答案 36 :(得分:0)

我为此专门用Node.js编写了一个工具。签出Download Repo Dir

使用npm i -g dl-repo-dir和命令repo进行安装将在全球范围内可用。

下载并重命名存储库中的目录

repo download aztack/download-repo-dir lib src/lib/new-name

下载存储库

repo download aztack/download-repo-dir '' src/lib/download-repo-dir

从具有给定标签的私有gitlab存储库下载

export GITLAB_API_PRIVATE_TOKEN=YOUR_TOKEN_HERE

repo download gitlab:mygitlab.com:topgroup/subgroup/repo#v1.0.0 dir src/lib/new-name

,将有一个repo.json文件来保存所有信息。

在新项目中,可以使用repo.json命令使用存在的repo init初始化项目。

答案 37 :(得分:0)

您可以通过以下方式使用git svn。

git svn clone https://github.com/lodash/lodash/trunk/test

这样,您不必为Windows用户专门设置svn。

答案 38 :(得分:0)

一个简单的答案是先通过以下链接乌龟svn。

  

https://tortoisesvn.net/downloads.html

在安装期间打开CLI选项,以便可以从命令行界面使用它。

复制git hub子目录链接。

  

示例

     

https://github.com/tensorflow/models/tree/master/research/deeplab

用树干替换树/母版

  

https://github.com/tensorflow/models/trunk/research/deeplab

然后做

  

svn结帐https://github.com/tensorflow/models/trunk/research/deeplab

文件将下载到当前目录的deeplab文件夹中。

答案 39 :(得分:0)

如果您想使用Python和SVN下载特定的GitHub目录,请使用以下代码:

import validators
from svn.remote import RemoteClient

def download_folder(url):
    if 'tree/master' in url:
        url = url.replace('tree/master', 'trunk')

    r = RemoteClient(url)
    r.export('output')


if __name__ == '__main__':
    url = input('Enter folder URL: ')
    if not validators.url(url):
        print('Invalid url')
    else:
        download_folder(url)

您可以在本教程中查看有关此代码的更多详细信息以及其他GitHub搜索和下载提示:https://python.gotrained.com/search-github-api/

答案 40 :(得分:-1)

安装svn

windows下载svn。在Linux中搜索存储库。 sudo apt install subversion

假设我们要从simple-auth下载https://github.com/gatsbyjs/gatsby/trunk/examples/simple-auth

步骤1

替换网址

/tree/examples
or
tree/develop

使用

/trunk/examples

因此URL变为

https://github.com/gatsbyjs/gatsby/trunk/examples/simple-auth

步骤2

svn export https://github.com/gatsbyjs/gatsby/trunk/examples/simple-auth

完成!

答案 41 :(得分:-2)

如果你要下载的directoy是一个独立的库,最好创建一个其他的git repo,然后使用git子模块函数。

当然,您必须是您想要的初始回购的拥有者