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

举个GitHub repo的例子:

git@github.com:foobar/Test.git

其目录结构:

Test/
├── foo/ 
│   ├── a.py
│   └── b.py   
└── bar/
    ├── c.py
    └── d.py

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


当前回答

最简单的方法是使用fetcher

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

npm安装-ggithub文件获取器

然后您可以下载带有URL的文件或文件夹:

fetcher--url=resource_url--out=output_directory

例如:

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

其他回答

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

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

~要打开终端,只需单击聚光灯并键入终端,然后点击enter

在Mac上,您可能已经拥有SVN(只需测试开放终端和键入“svn”或“which svn”~(不带引号)在Github上:通过单击repo中的特定文件夹名称,找到git文件夹(而不是repo)的Github路径从浏览器的地址栏复制路径打开终端并键入:svn export下一步粘贴地址(例如):https://github.com/mingsai/Sample-Code/tree/master/HeadsUpUI替换单词:tree/master带有单词:trunk键入文件的目标文件夹(在本例中,I将目标文件夹存储在当前用户)这里空格只是空格键而不是单词(空格)~/Downloads/HeadsUpUI最后一个终端命令显示下载文件夹(将地址与步骤5进行比较)svn导出https://github.com/mingsai/Sample-Code/trunk/HeadsUpUI~/下载/HeadsUpUI

BTW-如果您在Windows或其他平台上,您可以在以下位置找到subversion(svn)的二进制下载http://subversion.apache.org

~如果您想签出文件夹而不是简单地下载它,请尝试使用svn帮助(tldr:replace export with checkout)

使现代化

关于恢复中断的下载/签出的评论。我会尝试先运行svn清理,然后再运行svn更新。请在SO中搜索其他选项。

最简单的方法是使用fetcher

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

npm安装-ggithub文件获取器

然后您可以下载带有URL的文件或文件夹:

fetcher--url=resource_url--out=output_directory

例如:

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

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

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

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

当然,你必须是你想要的初始回购的所有者

我找到的最简单的方法是如何仅克隆Git存储库的子目录?

我在gitclone命令中添加了-b<branch>--singlebranch以下载特定的分支。所以我使用的命令是:

git clone --depth 1 --single-branch -b <branch> --filter=blob:none --sparse <url>
git sparse-checkout set <directory>