You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GitHub仓库clone时下载大量对象体积过大中断,如何查找并删除大文件?

问题原因
  • Git会保留所有提交历史中的文件版本,即便你当前工作目录的文件数量少,只要历史提交中曾经上传过大文件(如数据集、压缩包、编译产物、模型文件等),哪怕后续在工作区删除了这些文件,它们依然会存储在Git的提交对象中。克隆仓库时默认会拉取全量历史对象,所以会出现对象数多、总体积大的情况。
  • 你当前的下载速度仅18KiB/s,GitHub链路不稳定是下载中途崩溃的直接诱因。
查找仓库大文件的操作步骤
  1. 先执行浅克隆拿到最小可用的仓库副本,避免全量克隆失败:
git clone --depth=1 https://github.com/puraminy/mt5-comet
cd mt5-comet
  1. 拉取完整提交历史后执行以下命令,扫描所有历史中的大文件:
git fetch --unshallow
git rev-list --objects --all | \
git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | \
sed -n 's/^blob //p' | \
sort --numeric-sort --key=2 | \
cut -c 1-12,41- | \
numfmt --field=2 --to=iec-i --suffix=B --padding=7 --round=nearest

命令输出结果按文件大小从小到大排序,末尾条目即为仓库中体积最大的文件,会显示文件哈希、大小、对应路径。

大文件的忽略与清理方案

仅存在于未提交的本地文件

直接编辑仓库根目录的.gitignore文件,添加对应大文件的匹配规则,示例如下:

# 忽略所有zip压缩包
*.zip
# 忽略pt模型文件
*.pt
# 忽略整个build目录
build/

随后执行git rm --cached 大文件路径将文件从Git追踪列表中移除,正常提交改动即可。

已经存入提交历史的大文件

推荐使用git filter-repo工具清理历史记录,操作前请务必备份完整的仓库文件,避免数据丢失:

  1. 拉取仓库的完整镜像:
git clone --mirror https://github.com/puraminy/mt5-comet
  1. 执行清理命令,按路径删除指定大文件:
# 删除单个指定路径的大文件
git filter-repo --path 大文件的完整路径 --invert-paths
# 批量删除所有匹配后缀的大文件,示例为删除所有zip文件
git filter-repo --path-glob '*.zip' --invert-paths
  1. 清理完成后强制推送覆盖远程仓库的历史记录:
git push origin --force --all
git push origin --force --tags

如果不需要保留历史提交记录,也可以直接删除现有GitHub仓库,将本地最新的工作区文件重新初始化提交为新仓库,操作更简便。

临时解决克隆失败的方法

如果暂时不需要处理历史大文件,仅需要拿到最新版本的代码,可以直接用浅克隆命令:

git clone --depth=1 https://github.com/puraminy/mt5-comet

该命令仅拉取最近一次提交的内容,不会下载全量历史对象,体积小、速度快,可规避下载崩溃问题。

内容的提问来源于stack exchange,提问作者Ahmad

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.30 01:39:02