如何从 CLI 下载 GitHub 存储库中的子文件夹/文件

Posted

技术标签:

【中文标题】如何从 CLI 下载 GitHub 存储库中的子文件夹/文件【英文标题】:How can I Download Sub-folders / files in GitHub Repository from CLI 【发布时间】:2022-01-09 10:36:00 【问题描述】:

我正在尝试在不同的存储库中获取特定的子文件夹,并且想知道如何运行自动化脚本以将所有需要的子文件夹下载到我的本地计算机或拉到我的本地 git 存储库。

我曾尝试在 Git Bash 上使用“sparse-checkout”,但它确实会根据需要返回子文件夹及其文件。

我们将不胜感激。

谢谢! 迦勒

【问题讨论】:

您是否有理由不能只克隆存储库,然后根据需要使用文件夹(或将它们复制到其他地方)? 试过***.com/questions/600079/…的东西?发现于***.com/search?q=%5Bgit%5D+clone+subfolder @bk2204 我正在处理 200 多个存储库,分支总数达到数千个。所以我需要能够使用 CLI 来指定每个 repos 和所需的文件夹/文件 【参考方案1】:

通常,您可以通过使用 shell 脚本将存储库克隆到您的系统,然后从系统中提取文件来完成此操作。如果您希望下载更少的数据,您可以使用部分克隆(例如,git clone --filter=blob:none),然后只会按需下载您需要的 blob。

如果您只需要每个存储库中的一个或两个分支并且它们都来自 GitHub,那么您可以使用 GitHub REST API 为您需要的分支和存储库下载一个 tarball。请注意,如果您每小时发出超过 60 个请求,则需要使用个人访问令牌。

如果您有部分克隆,您还可以使用稀疏检出来仅过滤您想要的文件。但是,您也可以使用 git archive 生成 tarball,如果您有来自 git archive 或 GitHub 的 API 的 tarball,您可以只提取某些文件或文件夹,如下所示:

tar -C DESTDIR -xf foo.tar.gz folder1/ folder2/

请注意,GitHub REST API 不提供仅下载数据子集的功能。您必须下载包含整个树或提交的 tarball。

【讨论】:

以上是关于如何从 CLI 下载 GitHub 存储库中的子文件夹/文件的主要内容,如果未能解决你的问题,请参考以下文章

如何从命令行列出 Github 包注册表存储库中的所有包?

从GitHub下载单个文件

如何使用 GitHub REST API 通过我的个人访问令牌访问组织拥有的私有存储库中的文件数据?

如何指定要从私有 github 存储库中提取的 gem?

GitHub:如何对存储库中的代码进行区分大小写的搜索?

您可以从 github 存储库中的另一个目录导入 python 模块吗? [复制]