克隆Hugging Face仓库时.git文件夹体积巨大的原因与解决办法
问题解答
.git文件夹里的大文件是什么?
你看到的.git文件夹里的大文件,主要是Git LFS的对象缓存,存放在.git/lfs/objects目录下。Git LFS的工作机制是用小的指针文件替代仓库里的大文件,实际的大文件会被下载到本地的LFS缓存目录中。
虽然你加了--depth 1做浅克隆,但这个参数只限制Git的提交历史层数,不会限制Git LFS对象的下载范围。默认情况下git lfs clone会拉取仓库所有历史中关联的LFS对象,而非仅当前HEAD引用的对象,这就导致即使提交历史只有1层,.git/lfs/objects里还是会存储所有模型文件的副本,最终让.git文件夹体积庞大。
如何避免下载这些文件,或仅克隆模型文件?
有两种常用方案:
方案1:使用Hugging Face专用下载工具(推荐)
直接用huggingface-cli工具下载模型文件,完全跳过Git相关的内容,不会生成.git文件夹。
执行命令:
huggingface-cli download bigscience/bloom --local-dir ./bloom --local-dir-use-symlinks False
这个命令会直接把模型文件下载到指定的./bloom目录,没有任何Git冗余文件。
方案2:优化Git LFS克隆流程
如果一定要用Git工具,可以分两步操作,只拉取当前HEAD对应的LFS对象:
- 先做浅克隆,只拉取Git元数据(不下载LFS对象):
git clone --depth 1 https://huggingface.co/bigscience/bloom - 进入仓库目录,只拉取当前HEAD引用的LFS对象:
cd bloom git lfs pull --include="*.bin" --exclude="*"
这样只会下载当前分支最新版本的模型文件,不会拉取历史中的LFS对象,.git文件夹体积会大幅缩小。
另外,下载完成后可以清理LFS的冗余缓存:
git lfs prune
这个命令会删除.git/lfs/objects中没有被当前仓库引用的LFS对象。
内容的提问来源于stack exchange,提问作者user2741831
相关产品推荐
相关产品推荐

