GitHub 免费版到底够不够用?我把 LFS 和 Actions 配额踩穿之后算的一笔账

🔑 关键词:GitHub 免费额度, GitHub Actions 分钟数, Git LFS 收费, GitHub Pro 值不值, 私有仓库限制

📖 摘要:从一次把 187MB 视频推进仓库导致 push 被拒的真实事故讲起,拆解 GitHub 免费账号里真正会咬人的三层配额:单文件 100MB 硬限制、Git LFS 的 1GB 存储与 1GB 月带宽、以及 Actions 分钟数的 Linux 1x / Windows 2x / macOS 10x 倍率。对比 GitLab、Gitee 的免费策略,给出一个反直觉的结论:多数人买 Pro 是买错了地方。

先把那次事故讲一下

2022 年秋天,我在做一个客户的交付项目,图省事把一批 PSD 源文件和两段 1080p 的录屏演示直接扔进了同一个私有仓库。前两次 push 都过了,第三次终端开始转圈,卡了大概四分钟,然后吐出一行红字:

remote: error: File demo_v3.mp4 is 187.42 MB; this exceeds GitHub's file size limit of 100.00 MB
remote: error: GH001: Large files detected.

那个仓库的历史记录当时已经堆到 1.2G 左右了。要从历史里彻底抹掉这些大文件,得用 git filter-repo 重写全部 commit 再 force push,本地和另外两个协作者的分支全废。那天我干到凌晨两点,就为了干这一件事。

从那之后我才认真去读了 GitHub 的配额文档。读完的结论是:大部分人以为 GitHub 的「免费」就是无限,其实它是一套分层很细的计量体系,只是平时不触发,你根本感觉不到它存在。

免费额度里真正会咬人的三层

第一层是仓库本身。GitHub 对单个文件是硬性 100MB 上限——不是警告,是直接拒绝 push,你连商量的余地都没有,除非上 Git LFS。仓库总量上,官方推荐控制在 1GB 以内,到 5GB 会给你发提醒,但它不封你。很多人仓库几十个 G 也照样在用,只是 clone 一次要等十分钟,CI 每次拉代码都在烧钱。

第二层是 Git LFS。这东西名字很像「免费大文件存储」,其实完全不是。免费账号给的是 1GB 存储 + 每月 1GB 下载带宽(bandwidth)。注意,是下载带宽——别人 clone 你的仓库、CI 拉一次代码,全都算在这 1GB 里。一旦用完,LFS 请求直接返回 403,你的 CI 会莫名其妙失败,而且报错信息特别含糊,我第一次遇到时查了三个小时才反应过来是带宽耗尽。想加量,5 美元买 50GB 数据包,存储和带宽分开算。我有个做游戏的同学,美术资源全走 LFS,每个月的带宽账单比他 Pro 的年费还高。

第三层是 Actions,也是最容易忽略的。免费账号在私有仓库每月 2000 分钟,但关键是分钟数要乘倍率。Linux runner 是 1 倍,Windows 是 2 倍,macOS 是 10 倍。也就是说,2000 分钟在 macOS runner 上只等于 200 分钟,一个稍微像样点的 iOS 构建矩阵就能吃掉一大半。我的流水线是 macOS 打包加 Linux 跑测试,账单页面上显示「已使用 1860 分钟」——那是按倍率折算之后的数字,原始执行时间其实只有三百多分钟。

Pro 到底买的是什么

GitHub Pro 是 4 美元一个月,个人账号。很多人冲上去买,是看到「Actions 3000 分钟」觉得翻倍了。但说实话,从 2000 到 3000 这个提升对个人开发者意义不大,真正该让你掏钱的场景根本不是这个。

我列几个我实际用到过的差异(数字以官方 pricing 页为准,GitHub 这几年改过好几轮):私有仓库的 branch protection 规则、代码所有者、必需 reviewer 这些,在 Free 的私有仓库里是受限的;从私有仓库发布 Pages 站点,Free 也不支持;Codespaces 的免费额度 Free 账号是每月 120 core-hours 加 15GB 存储,Pro 会多一点但没翻倍。

我的判断是:如果你只有一个私有仓库、不需要保护分支、不用 Pages 发私有站点,Pro 对你的价值接近于零。省下这钱不如留着付 LFS 的带宽或者买 Codespaces 时长。

反过来,如果你在维护开源项目,那 3000 分钟这条根本不用看——公开仓库的 Actions 是无限免费的。这也是 GitHub 上一个公开的秘密:有人把私有仓库临时改成 public,跑完 CI 再改回去。技术上可行,但你要想清楚,公开的那一瞬间,全部历史提交、issue、fork 关系就已经暴露在搜索引擎和爬虫面前了,改回去也不会消失。我干过一次,第二天发现有人已经 fork 了。

真正该对比的不是免费和付费

我把 GitHub 的配额跟 GitLab、Gitee 摆在一起算过一笔账,结论有点反直觉。

GitLab 免费版给的 CI 分钟数是每月 400 分钟(共享 runner),比 GitHub 的 2000 少得多,但它的 runner 倍率算法不一样,而且自建 runner 完全免费,只要你有机器。Gitee 的 Pages 在国内访问快,但并发构建限制和仓库体积限制又是另一套逻辑。真正决定你选哪个的,往往不是分钟数本身,而是你的代码在哪儿、协作者在哪儿、构建机器在哪儿——这三件事比任何配额表都重要。

GitHub 免费版的设计思路,我觉得是一个「让人察觉不到上限的试用期」:仓库数量不限、协作者不限(2020 年 4 月之后才放开)、公开仓库 Actions 无限。它把成本压在两个地方——私有大文件和私有仓库的 CI 时间。这两个恰好是大团队会撞上、个人开发者不太会撞上的位置。

所以如果你被 GitHub 的配额卡过,第一件事不是去升级付费计划,而是先搞清楚自己卡的是哪一层。我见过太多人冲着「Pro 有 3000 分钟」去付费,结果实际卡住他的是 LFS 的 1GB 带宽,两件完全不同的事。先看账单页面,再看 pricing 页,顺序搞反了就白花钱。

🏷️ 标签: