GitHub 大文件限制是什么
GitHub 对单文件推送有硬限制:超过 100 MiB 的推送会被直接拒绝,超过 50 MiB 会给出警告;大文件应改用 Git LFS 或制品库存放。数值是平台默认值,不同托管服务以各自文档与实例配置为准,处理思路一致但阈值可能不同。
基本信息
| 推送硬限 | 单文件超过 100 MiB 会被阻止(平台默认) |
|---|---|
| 警告阈值 | 超过 50 MiB 时提示 |
| 推荐做法 | 二进制素材/模型走 LFS;构建产物走发布附件或制品库 |
| 定位方法 | rev-list + cat-file 扫描找出超限文件 |
| 处理顺序 | 先规范新提交,再评估是否需要重写历史 |
典型使用场景
- 推送被拒时定位:确认是哪个文件超限、出现在哪一次提交。
- 素材库规范:设计稿、模型文件入库前先配 LFS 跟踪规则。
- 制品存放决策:构建产物、安装包不进 Git,改用发布附件或制品库。
- 历史清理评估:已进入历史的大文件决定是否重写(成本高,谨慎)。
- 新仓库预检:导入外部仓库前先扫描大文件,避免推送到一半被拦。
排查与处理
排查与处理
git rev-list --objects --all | git cat-file --batch-check='%(objecttype) %(objectname) %(objectsize) %(rest)' | awk '$1 == "blob" && $3 > 52428800 {print $3, $4}' | sort -nr | head
# 列出超过 50 MiB(52428800 字节)的对象
# 确认目标后:迁移 LFS 或从历史移除
# 推送仍被拒时对照硬限 100 MiB,先处理最大的文件大文件处理对照
| 场景 | 建议做法 | 原因 |
|---|---|---|
| 设计稿/模型 | 纳入 LFS 跟踪 | 版本多、单文件大 |
| 构建产物 | 发布附件或制品库 | 可再生成,不必版本化 |
| 数据集 | 外部存储加校验记录 | 仓库不适合承载大体积数据 |
| 历史遗留大文件 | 评估重写历史 | 影响所有克隆方,需协调 |
把大文件从历史移除需要重写提交并由团队协调同步,按历史改写流程执行,不要单人直接强推覆盖远端;提前在团队内公告新历史切换时间。