You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何仅拉取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

火山引擎 最新活动