Github 上传文件超过100M时报错处理

💡 原文中文,约1300字,阅读约需4分钟。
📝

内容提要

GitHub 上传超过 100MB 的文件会报错,可用 Git LFS 解决:安装 git-lfs 并执行 git lfs install,在仓库中用 git lfs track "*.pdf" 跟踪大文件,再 add、commit、push。若此前已用 LFS 提交仍报错,需用 BFG 清除历史大文件记录,执行 git reflog expire 与 git gc 清理,并临时允许强制推送后 git push -f。

🔎

延伸解读

Git LFS 的适用场景与操作要点

文章针对 GitHub 单文件超过 100MB 的报错,给出 Git LFS 的解决路径。核心是先用 find 命令找出大文件,再安装 git-lfs 并执行 git lfs install,随后用 git lfs track 指定需跟踪的文件类型(如 *.pdf),最后正常 add、commit、push。需注意,track 后要一并提交生成的 .gitattributes 文件,否则 LFS 规则可能不生效。

历史提交残留大文件时的补救措施

若此前已用 LFS 提交仍持续报错,说明历史记录中仍残留大文件。文章建议用 BFG 工具清除:先克隆仓库,执行 java -jar bfg.jar --delete-files 指定文件名并加 --no-blob-protection,再运行 git reflog expire 与 git gc 清理本地历史,最后强制推送。此操作会改写提交历史,需谨慎评估对协作分支的影响。

强制推送前的必要设置与风险提示

执行 git push -f 前,文章明确要求先在 GitHub 仓库设置中临时允许强制推送:进入 Setting → Branches → Add rules → Allow force pushes。这说明强制推送默认被保护规则阻止。清理历史属于破坏性操作,若仓库有他人协作,应提前协调,避免覆盖他人提交或造成分支混乱。

❓

Q&A

GitHub 上传文件超过 100MB 报错怎么解决?

使用 Git LFS 解决:安装 git-lfs 并执行 git lfs install,在仓库中用 git lfs track "*.pdf" 跟踪大文件,然后 git add .gitattributes、git add 大文件、git commit、git push。

如何安装和配置 Git LFS 来跟踪大文件?

安装 git-lfs(可从 GitHub 或 packagecloud 下载),执行 git lfs install 初始化,然后在仓库中运行 git lfs track "*.pdf" 指定要跟踪的文件类型,并提交 .gitattributes 文件。

之前用了 LFS 但推送还是报错超过 100MB 怎么办?

需要清除之前的 LFS 提交记录:使用 BFG 工具删除历史大文件(java -jar bfg.jar --delete-files '文件名' --no-blob-protection),然后执行 git reflog expire 和 git gc 清理,最后强制推送。

BFG 工具怎么用来删除 Git 历史中的大文件?

下载 bfg.jar,克隆仓库后执行 java -jar bfg.jar --delete-files '文件名' --no-blob-protection 强制删除指定文件,然后运行 git reflog expire --expire=now --all && git gc --prune=now --aggressive 进行垃圾回收。

强制推送前需要做什么设置?

需要在 GitHub 仓库设置中允许强制推送:进入 Setting → Branches → Add rules → 勾选 Allow force pushes,然后才能执行 git push -f origin master。

如何查找仓库中超过 100MB 的文件?

在仓库根目录执行 find . -type f -size +100M 命令,可以列出所有超过 100MB 的文件。

🏷️

标签

➡️

继续阅读