有没有这样的苦恼:仓库太大,只想下载其中某些文件(夹)?
一招解决:
./down_folder_from_git.sh https://github.com/facebook/infer main 'Makefile FILES.md scripts examples'
./down_folder_from_git.sh https://github.com/Tencent/TscanCode master samples
运行前,先修改开头三个变量
原理: 稀疏检出 让工作树仅包含自定义的文件
#!/usr/bin/bash
[[ "$#" -ne 3 ]] && echo "$0 仓库 分支 文件(夹)" && exit
addr=$1 #'https://github.com/facebook/infer' # 仓库
branch=$2 #'main' # 分支
obj="$3" #'Makefile FILES.md scripts examples' # 要下载文件夹(夹)
# 1.获取该仓库元信息
git clone -n --recursive ${addr}.git || exit 1
cd ${addr##*/}
# 2.设置git,并指定要下载哪些文件(夹)
git config core.sparseCheckout true
git sparse-checkout set /${obj// / \/}
# 3. 下载文件夹
git checkout $branch
rm -rf .git