迁移*.fmu文件至Git LFS并清理历史失败,求解决办法
问题分析与解决方案
你的核心问题是:三种工具处理后,仓库objects目录大小未变,说明原*.fmu文件的Blob对象仍被仓库内的某些引用(分支、标签、stash、备份引用等)保留,导致git gc无法回收这些对象。以下是针对性的排查和解决步骤:
第一步:排查所有保留旧Blob的引用
先清理仓库内所有可能留存旧提交的引用:
# 查看所有分支、标签、远程引用 git for-each-ref # 查看是否有未清理的stash git stash list # 检查是否存在BFG/旧版filter-branch生成的备份引用目录 ls -la refs/original/
- 若有stash,执行
git stash clear清空 - 若存在
refs/original/目录,直接删除:rm -rf refs/original/
针对git-filter-repo的修正操作
你之前的命令未覆盖所有分支/标签,导致部分分支的*.fmu文件未被移除。改用以下流程:
# 克隆非裸仓库(mirror克隆不适合filter-repo操作) git clone https://address.to.MyRepo MyRepo-clean cd MyRepo-clean # 处理所有分支、标签、远程引用,彻底移除*.fmu文件 git filter-repo --path-glob '*.fmu' --invert-paths --refs 'refs/heads/*' 'refs/tags/*' 'refs/remotes/*' # 强制清理历史引用并回收垃圾 git reflog expire --expire=now --all git gc --prune=now --aggressive
执行完成后,用你之前的Blob统计命令检查,确认*.fmu的Blob已消失。
针对git lfs migrate的修正操作
若要迁移至LFS,需确保命令覆盖所有提交,并彻底清理原Blob:
# 克隆非裸仓库 git clone https://address.to.MyRepo MyRepo-lfs cd MyRepo-lfs # 配置LFS追踪*.fmu文件 git lfs track '*.fmu' git add .gitattributes git commit -m "Track *.fmu with Git LFS" # 迁移所有历史中的*.fmu文件(含所有分支、标签),启用verbose查看处理日志 git lfs migrate import --include '*.fmu' --everything --verbose # 检查原Blob是否已被移除(无输出则说明成功) git rev-list --objects --all | grep '\.fmu$' | git cat-file --batch-check='%(objecttype) %(objectname)' | grep blob # 彻底清理垃圾 git reflog expire --expire=now --all git gc --prune=now --aggressive git lfs prune --force
若--verbose输出显示部分分支未被处理,需手动添加--refs参数指定这些分支。
针对BFG的修正操作
BFG转换后会在refs/original/留存原提交备份,必须删除才能让GC回收原Blob:
cd MyRepo.git # 删除BFG生成的原提交备份目录 rm -rf refs/original/ # 强制清理并回收垃圾 git reflog expire --expire=now --all git gc --prune=now --aggressive git lfs prune --force
最后验证
操作完成后,执行以下命令确认效果:
# 查看objects目录大小 du -hd1 .git/objects # 再次检查Blob对象,确认无*.fmu条目 git rev-list --objects --all --missing=print | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | sed -n 's/^blob //p' | grep '\.fmu$'
注意:所有操作完成后,需强制推送到远程仓库(git push --force --all && git push --force --tags),并通知所有协作者重新克隆仓库,避免继续使用旧历史提交。
内容的提问来源于stack exchange,提问作者sdunnim
相关产品推荐
相关产品推荐

