已用Git LFS追踪大文件,仍遭GitHub推送拒绝求助
解决Git LFS追踪文件仍被GitHub拒推的问题
问题分析
从错误日志看,GitHub检测到Assets/Scenes/Main.unity文件大小为102.54MB,超过了100MB限制——尽管你已用git lfs ls-files确认文件被追踪,但核心原因是仓库的历史提交或当前提交中,该文件并未被正确替换为LFS指针,GitHub仍能获取到原文件的完整数据。
解决方案
1. 检查当前提交的文件是否为LFS指针
运行以下命令查看文件内容:
cat Assets/Scenes/Main.unity
如果显示的是原Unity场景文件内容,而非以version https://git-lfs.github.com/spec/v1开头的LFS指针文本,说明当前提交中的文件未被LFS正确处理。
2. 修复当前未推送的提交
如果是当前未推送的提交有问题:
- 撤销最近一次提交(保留文件修改):
git reset HEAD~1 - 确认
.gitattributes中存在正确的追踪规则:git lfs track "Assets/Scenes/Main.unity" - 重新添加文件(此时会生成LFS指针):
git add Assets/Scenes/Main.unity - 重新提交并推送:
git commit -m "Migrate Main.unity to Git LFS" git push origin mac
3. 清除历史提交中的原文件
如果历史提交中已经存在该文件的非LFS版本,需要改写仓库历史:
- 使用Git LFS自带的迁移工具处理所有分支的历史:
git lfs migrate import --include="Assets/Scenes/Main.unity" --include-refs=all - 强制推送覆盖远程分支(注意:此操作会改写远程历史,需确保团队成员同步):
git push origin mac --force
4. 验证修复结果
- 再次确认文件被LFS追踪:
git lfs ls-files - 检查提交中的文件是否为LFS指针:
git show HEAD:Assets/Scenes/Main.unity
内容的提问来源于stack exchange,提问作者arcadeperfect
相关产品推荐
相关产品推荐

