如何仅拉取Git仓库指定目录或下载GitHub特定文件夹?
只拉取Git仓库指定目录的两种实用方法
别担心,不用硬扛那800MB的庞大仓库,我教你两个高效方法,只获取你需要的aspnetcore/fundamentals/logging/index/sample2文件夹,完美适配你网络慢的情况:
方法一:Git稀疏检出(适合后续可能需要仓库其他内容的场景)
这种方法会创建一个轻量的本地仓库,只同步你指定的目录,后续如果需要其他文件也能轻松扩展:
- 第一步:创建本地文件夹并初始化仓库,同时浅克隆远程仓库(只拉最新版本,跳过历史记录,大幅减少下载量):
mkdir logging-sample2 cd logging-sample2 git init git remote add origin https://github.com/aspnet/Docs.git git fetch --depth 1 origin master
注:
--depth 1参数是关键,它只获取仓库的最新提交,不会下载所有历史版本,能把体积压缩到最小。
- 第二步:启用Git的稀疏检出功能:
git config core.sparseCheckout true
- 第三步:告诉Git你要拉取的具体目录路径:
echo "aspnetcore/fundamentals/logging/index/sample2/" >> .git/info/sparse-checkout
注意路径要和远程仓库里的完全一致,结尾加
/是为了明确指定这是一个目录,避免误匹配文件名。
- 第四步:拉取指定目录到本地:
git checkout master
完成后,你就能在当前文件夹里看到需要的sample2目录了。
方法二:直接用Git Archive导出指定目录(最轻量化,一次性获取)
如果你只是临时需要这个文件夹,不想保留本地仓库的话,这个方法更省心——直接从远程仓库导出指定目录的压缩包并解压,完全不用克隆仓库:
git archive --remote=https://github.com/aspnet/Docs.git master:aspnetcore/fundamentals/logging/index/sample2/ | tar -x
解释一下:这个命令直接从远程仓库的
master分支上定位到你需要的目录,把它打包成压缩包,然后通过管道用tar命令解压到当前文件夹。Windows用户可以用Git Bash或者WSL来执行这个命令,或者把导出的压缩包保存到本地后用7-Zip等工具解压。
额外提示
- 如果远程仓库的目标分支不是
master,记得把命令里的master换成对应的分支名称; - 用稀疏检出的方法时,后续如果需要添加其他目录,只需要修改
.git/info/sparse-checkout文件,添加新的路径,然后执行git pull即可。
内容的提问来源于stack exchange,提问作者Rohit Kumar




