将Git LFS仓库目录迁移至非LFS仓库失败求助
解决Git LFS迁移后
.git/lfs/objects残留问题 你遗漏了几个关键的清理与验证步骤,以下是完整的修复流程:
1. 验证LFS迁移是否彻底完成
先确认所有LFS指针已替换为实际文件,且LFS跟踪规则已清除:
- 打开
.gitattributes文件,删除所有与LFS相关的配置行(例如*.zip filter=lfs diff=lfs merge=lfs -text这类规则) - 运行
git lfs ls-files,如果无任何输出,说明所有文件已转为非LFS存储;若仍有输出,重新执行git lfs migrate export --everything --include . --verbose,通过日志排查未迁移的文件
2. 清理本地LFS缓存
git lfs migrate仅替换提交中的LFS指针,不会自动删除本地缓存的LFS对象,需手动清理:
- 执行
git lfs prune --all:该命令会删除本地仓库中不再被任何提交引用的LFS对象 - 若
.git/lfs/objects仍有残留,可直接删除整个.git/lfs目录(确认无需保留LFS缓存后再操作)
3. 移除Git配置中的LFS残留项
即便执行了git lfs uninstall,本地仓库配置可能仍残留LFS相关设置,需手动清除:
git config --unset-all filter.lfs.process git config --unset-all filter.lfs.smudge git config --unset-all filter.lfs.clean git config --unset-all filter.lfs.required
4. 重新添加远程仓库并推送
完成上述步骤后,添加新远程并推送仓库:
git remote add new-origin <NEW_REPO_URL> git push new-origin --all --tags
额外注意
- 若你先执行
git filter-repo再做LFS迁移,--everything参数已覆盖所有分支和标签,确保迁移覆盖了过滤后的所有提交 - 推送前可使用
git push --dry-run new-origin --all预览推送内容,确认无LFS相关对象被推送
内容的提问来源于stack exchange,提问作者Michael Gabbay
相关产品推荐
相关产品推荐

