← 返回
未分类

Git LFS 大文件清理技能

Git LFS 大文件清理技能,用于诊断和解决因 LFS 文件导致的 git push 失败问题。 当用户遇到以下情况时触发: - git push 报错 "LFS only supported repository in paid or trial enterprise"(Gitee 个人版不支持 LFS) - git push 报错 "batch response: lfs batch error" 相关错误 - 需要从 git 历史中彻底移除大文件(模型权重 .safetensors、数据集、.venv 虚拟环境等) - 需要将 LFS 追踪的文件转回普通 git 对象 - git push 因文件体积过大被远程仓库拒绝 触发词包括但不限于:LFS、大文件、push 失败、git push 报错、lfs batch error、clean up git、清理 git 历史。
>Git LFS 大文件清理技能,用于诊断和解决因 LFS 文件导致的 git push 失败问题。
本本本添哥
未分类 community v1.0.0 1 版本 98000 Key: 无需
★ 0
Stars
📥 49
下载
💾 0
安装
1
版本
#latest

概述

Git LFS 大文件清理

诊断流程

收到用户报错后,按以下顺序排查:

  1. 确认是否为 LFS 问题:查看错误信息是否包含 lfs batch errorLFS only supported 等关键字
  2. 定位 LFS 文件git lfs ls-files 查看被 LFS 追踪的文件(* 表示已上传的指针文件)
  3. 扫描大文件:在项目目录中查找超过 10MB 的文件,重点关注:
    • .safetensors.bin.pt.onnx(模型权重)
    • .tgz.tar.gz*.zip(压缩包)
    • .venv/node_modules/(依赖目录)
    • huggingface_cache/modelscope_cache/(模型缓存)
  4. 检查 .gitignore:确认大文件目录是否已被排除
  5. 检查 .gitattributes:确认 LFS track 规则

处理方案

方案 A:取消 LFS 追踪 + .gitignore 排除(推荐)

适用于 Gitee 个人版、GitHub Free 等不支持 LFS 的远程仓库。

Step 1: 更新 .gitignore

.gitignore 中添加需要排除的大文件目录。通用规则:

# AI 模型缓存
huggingface_cache/
modelscope_cache/

# Python 虚拟环境
.venv/
venv/

# 数据集
data/dataset/
data/images/

# 大文件类型
*.safetensors
*.tar.gz
*.tgz

根据实际项目结构调整,只排除真正不需要版本控制的目录

Step 2: 从 git 索引移除(不删本地文件)

git rm --cached -r <目录或文件路径>

Step 3: 清理 LFS 追踪

# 取消 LFS 追踪
git lfs untrack "*"

# 卸载 LFS hooks
git lfs uninstall

# 清理残留 filter 配置
git config --unset filter.lfs.clean
git config --unset filter.lfs.smudge
git config --unset filter.lfs.process
git config --remove-section lfs
# 全局配置也要清理
git config --global --unset filter.lfs.clean
git config --global --unset filter.lfs.smudge
git config --global --unset filter.lfs.process

Step 4: 用 git-filter-repo 从历史中彻底删除大文件

如果 git lfs migrate export 失败(常见原因:远程 LFS 服务不可用,无法下载指针指向的实际文件),必须用 filter-repo。

# 安装(如果没有)
pip install git-filter-repo

# 从所有历史提交中删除指定路径
python -m git_filter_repo --invert-paths \
  --path AI/HuggingFace \
  --path AI/ModelScope \
  --path .venv \
  --path data/dataset \
  --force

注意git-filter-repo 会自动移除 origin remote,需重新添加。

Step 5: 重新关联远程并 force push

# filter-repo 会删除 origin,需重新添加
git remote add origin <仓库URL>

# force push(历史已重写,必须强制推送)
git push --force origin <分支名>

方案 B:仅 .gitignore 排除(LFS 文件未在历史中)

如果 LFS 文件只是 git add 了但还没 push,且不需要清理历史:

# 更新 .gitignore
# 从索引移除
git rm --cached -r <路径>
# 正常提交推送
git add .gitignore
git commit -m "chore: remove large files from tracking"
git push

注意事项

  • git-filter-repo 会重写所有历史,所有协作者需要重新 clone
  • 本地文件不受影响git rm --cachedfilter-repo --invert-paths 只影响 git 追踪,不删除磁盘文件
  • 如果 git lfs migrate export 可用(远程 LFS 服务正常),优先使用它,可以保留文件内容但取消 LFS 管理
  • force push 前确认没有其他协作者正在使用该仓库,或提前通知他们
  • Windows 下 git-filter-repo 可能出现 unable to unlink 警告,可忽略,不影响结果

常见踩坑

  • git lfs uninstall 后仍报 LFS 错误:需要手动清理 git config 中的 filter.lfs 配置(local + global)
  • git lfs migrate export --include="*" 失败:通常是因为需要从远程下载 LFS 对象但远程不支持,此时必须用 git-filter-repo
  • git-filter-repo 不支持 --path 包含空格的路径,确保路径无空格
  • Gitee 个人版不支持 LFS,如果不想升级企业版,唯一解法是从历史中彻底移除 LFS 文件

版本历史

共 1 个版本

  • v1.0.0 Initial release 当前
    2026-05-25 17:22 安全 安全

安全检测

腾讯云安全 (Keen)

安全,无风险
查看报告

腾讯云安全 (Sanbu)

安全,无风险
查看报告

🔗 相关推荐

“本本本添哥”公众号写作

user_b0de6696
“本本本添哥”公众号写作
★ 0 📥 68

刘润思维顾问

user_b0de6696
刘润思维顾问。运用刘润的商业思维框架来分析和解决商业问题。包括五维思考法、五块思维积木、底层逻辑等核心工具。适用于商业模式分析、战略决策、问题诊断、趋势判断、复盘总结等场景。当用户需要深度系统化的商业分析时触发。不适用于简单事实查询或纯计算
★ 0 📥 64

杰士邦品牌文案创作专家

user_b0de6696
杰士邦品牌文案创作专家。专为年轻情侣(18-30岁)设计浪漫温馨的节日营销文案,覆盖情人节、七夕、520等浪漫节点。适用于社交媒体传播、电商详情页、品牌广告语等场景。当用户需要为杰士邦产品创作文案、策划节日营销活动、撰写浪漫主题内容时触发此
★ 0 📥 56