如何从github中克隆指定文件夹

一般来说,我们使用git clone <url> 是会克隆整个仓库下来的,但是某些时候我们可能只需要仓库中的某个/某几个文件夹即可,从而避免下载很多冗余的内容

Git 2.25.0 (Jan 2020)提供了sparse-checkout来实现此内容,一下给出具体代码以及注释。为了方便我将其封装成了脚本,实际运行的时候写进.sh文件中即可

bash 复制代码
#! /bin/bash
tar="$1" localdir="$2" && shift 2
# 参数定义并移除前两个参数

mkdir -p "$localdir"
cd "$localdir"

git clone -n --depth=1 --filter=tree:0 "$tar"
# -n 不进行文件检出 --depth=1 只克隆最近一次提交 --filter=tree:0 只克隆目录结构,不下载实际内容
rep=$(basename "$tar" .git)
# echo "$rep"
cd "$rep"

git sparse-checkout init 
# 初始化 Git 的sparse-checkout,允许只检出仓库中部分目录或文件

git sparse-checkout set --no-cone "$@"
# 指定要检出的文件或目录,$@给出所有参数,注意别用$*
# echo "$@"
git checkout

Usage:

bash 复制代码
./git_sparse_clone https://github.com/gutouyu/ML_CIA.git ./try "Wide&Deep" "DCN"

这里我将代码写进了git_sparse_clone.sh中,前两个参数分别指代目标仓库url以及本地要创建的仓库地址,之后是要克隆的文件夹(们),执行之后就会只克隆第三个参数起指定的目录

注意这个方法对单个文件可能没用,对应措施可以看看这里

相关推荐
KoProject3 小时前
发布30款App之后,我总结了这套GLM-4.6全自动化开发流
前端·后端·github
lkbhua莱克瓦244 小时前
Java基础——常用API2
java·笔记·github·学习方法
tkevinjd6 小时前
上传项目至GitHub与从Github克隆项目
github
wa的一声哭了6 小时前
Mac os安装Easyconnect卡在正在验证软件包
运维·服务器·git·macos·eclipse·github·mac
2501_938791836 小时前
服务器上的 VsCode:Github Copilot 显示 “连接失败”?网络与权限排查
服务器·vscode·github
逛逛GitHub7 小时前
GitHub 淘到 1 个「AI 控制浏览器」插件,一句话帮你干活。
github
再会呀11 小时前
[Ai Agent] 05 LangChain Agents 实战:从 ReAct 到带记忆的流式智能体
langchain·github
绝无仅有13 小时前
某游戏大厂Java面试深度解析:从多线程到JVM调优(二)
后端·面试·github
绝无仅有13 小时前
某游戏大厂Java面试指南:Spring、集合与语言特性深度解析 (三)
后端·面试·github
dwedwswd1 天前
技术速递|从 0 到 1:用 Playwright MCP 搭配 GitHub Copilot 搭建 Web 应用调试环境
前端·github·copilot