git lfs prune未清理全部LFS对象,如何保留指定文件并清理其余?
Git LFS 存储空间异常及清理方案
为什么.git/lfs/占用176MB但仅23MB对象可被清理?
git lfs prune只会清理仓库所有分支、标签、提交历史中不再引用的LFS对象。你的dry-run结果显示仅23MB对象符合清理条件,说明剩余153MB的对象仍被当前仓库的某个分支、旧提交或标签所引用。.git/lfs/目录还包含少量索引和缓存文件,但这部分占比极低,主要占用来自仍被引用的LFS对象。
如何保留指定23MB对象并清理其他LFS对象?
步骤1:定位并标记需要保留的对象
- 列出所有被引用的LFS对象及大小,找到目标23MB文件:
git lfs ls-files --size - 标记该文件对应的LFS对象为保留状态:
如果你知道对象ID,也可以直接指定ID保留:git lfs track --keep <目标文件的相对路径>git lfs store --keep <LFS对象ID>
步骤2:执行清理
运行强制清理命令,移除所有未被标记保留且无仓库引用的LFS对象:
git lfs prune --force
步骤3:清理隐藏的引用源
如果清理后空间仍未释放,检查是否存在未处理的分支引用:
- 删除本地无用分支:
git branch -d <无用分支名称> - 清理远程已删除分支的本地引用:
git fetch --prune - 重新执行清理:
git lfs prune --force
步骤4:手动清理(谨慎操作)
若仍有无法自动清理的冗余对象,可手动删除:
- 找到
.git/lfs/objects目录下的对应对象(对象ID前两位为一级文件夹名,接下来两位为二级文件夹名,剩余部分为文件名) - 删除冗余对象文件后,修复LFS索引:
git lfs fsck
内容的提问来源于stack exchange,提问作者Sourav Kannantha B
相关产品推荐
相关产品推荐

