React Native推送Git提示hprof文件过大,但文件不存在如何解决?
问题原因
- 该
java_pid60072.hprof文件曾被提交到Git历史记录中,即使现在本地已删除,Git在推送时会检查所有历史提交的文件大小,因此仍会触发GitHub的大小限制。 .gitignore仅对未被Git跟踪的文件生效,对已经提交过的文件无效,所以添加规则后无法解决历史遗留问题。- 你之前使用的
git filter-branch命令可能存在参数错误,或者未覆盖所有分支/标签、未清理Git缓存,导致历史中的大文件未被彻底移除。
解决方法
方法一:使用官方推荐的git filter-repo(更可靠)
- 安装
git filter-repo:- macOS:
brew install git-filter-repo - 其他系统:通过
pip install git-filter-repo安装(需先安装Python)
- macOS:
- 在项目根目录执行命令,彻底移除历史中所有
.hprof文件:git filter-repo --path-glob '*.hprof' --invert-paths - 强制推送到远程仓库(注意:此操作会改写远程历史,需确保团队成员知晓并同步):
git push origin master --force - 清理本地Git缓存和无效引用:
git reflog expire --expire=now --all && git gc --prune=now --aggressive
方法二:修正git filter-branch命令
如果坚持使用git filter-branch,执行以下完整命令:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch *.hprof' --prune-empty --tag-name-filter cat -- --all
执行完成后,同样执行强制推送和缓存清理步骤。
后续预防
- 确认
.gitignore中已添加*.hprof规则,避免后续误提交这类内存快照文件。 - 通知团队所有成员,删除本地旧分支后重新拉取远程代码,避免历史冲突。
内容的提问来源于stack exchange,提问作者gkeenley
相关产品推荐
相关产品推荐

