Git LFS仍追踪零字节文件,如何彻底移除所有LFS追踪文件并停用LFS?
彻底移除Git LFS中的零字节追踪文件并完全停用Git LFS
现象解释
你看到的e3b0c44298是空文件的SHA-1哈希值——所有零字节文件的内容完全一致,因此Git LFS会为它们分配同一个OID。这些空文件被LFS追踪,大概率是以下原因导致:
- 历史操作中曾通过
git lfs track命令直接追踪过这些文件 - 旧版
.gitattributes中存在通配符规则,意外匹配到了这些空文件 - 部分旧版本Git LFS存在逻辑缺陷,会自动将空文件纳入追踪范围
即使现在.gitattributes已清空,本地Git索引和LFS缓存中仍保留着这些文件的追踪记录,因此git lfs ls-files -s仍会列出它们。
解决方案
步骤1:将所有LFS追踪文件转换为普通Git对象
执行以下命令,把仓库中所有被LFS追踪的文件(包括这些空文件)转换为Git原生存储的对象:
git lfs migrate export --everything --include="*"
--everything参数会处理仓库的所有分支和历史提交,确保彻底清除LFS痕迹。
步骤2:清理本地LFS缓存与配置
- 移除本地LFS相关缓存目录:
rm -rf .git/lfs
- 重置Git索引,重新识别所有文件:
git rm --cached -r . git add .
- 提交更改:
git commit -m "Remove all Git LFS tracking and convert files to regular Git objects"
步骤3:停用Git LFS(可选)
如果需要完全停用仓库的Git LFS功能,执行:
git lfs uninstall
该命令会移除仓库级和全局的LFS配置。
步骤4:推送到远程仓库(若需同步)
如果要将更改同步到远程仓库,由于修改了历史提交记录,需要执行强制推送(注意提前告知协作成员,避免冲突):
git push --force
验证
执行以下命令确认所有LFS追踪记录已清除:
git lfs ls-files -s
若输出为空,则说明清理完成。
内容的提问来源于stack exchange,提问作者Eleco Martin
相关产品推荐
相关产品推荐

