Git缺失Blob致提交失败,git log无输出求助
解决Git缺失Blob导致的文件损坏问题
步骤1:彻底清除损坏文件的Git痕迹
既然接受丢失该文件历史,直接把它从Git的索引和所有历史记录里删掉:
- 先删除本地损坏的文件(如果能备份现有内容最好,没法用就直接删):
rm src/test/java/webproject/mydir/foo.java - 执行命令清除该文件的所有Git记录:
git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch src/test/java/webproject/mydir/foo.java' --prune-empty --tag-name-filter cat -- --all - 清理操作产生的临时文件,释放空间:
git for-each-ref --format="%(refname)" refs/original/ | xargs -n 1 git update-ref -d git reflog expire --expire=now --all git gc --prune=now --aggressive
步骤2:重建文件并重新提交
- 重新创建
src/test/java/webproject/mydir/foo.java,写入正常代码内容 - 把文件加入Git并提交:
git add src/test/java/webproject/mydir/foo.java git commit -m "recreate foo.java after repo corruption fix"
步骤3:验证仓库状态
- 运行
git fsck检查仓库是否还有缺失对象:git fsck - 确认没有报错后,再尝试用IntelliJ提交代码,问题应该就能解决了
内容的提问来源于stack exchange,提问作者evol1102
相关产品推荐
相关产品推荐

