从GitHub repo DownGit下载单个文件夹或目录

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从GitHub repo DownGit下载单个文件夹或目录相关的知识,希望对你有一定的参考价值。

如何从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,然后提供请求的目录。

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

  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 repo DownGit下载单个文件夹或目录的主要内容,如果未能解决你的问题,请参考以下文章

下载github的文件

如何下载GitHub一部分文件(一部分目录某个文件夹某个文件)

从 github 推送到 heroku,无需下载 repo

github上下载文件夹

从 dist 下载 laravel/spark-aurelius 失败:“https://api.github.com/repos/laravel/spark-aurelius/zipball

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