去年十月我写过一篇《记一次被 Github Banned 的经历》。那次账号被封,我老老实实填了申诉表单,等了几个月,账号也没有恢复。
一年之后,同一件事又发生了一遍。这次的结论比上次清楚:我不打算再写申诉了——纯是和阿三客服浪费时间
0x00 这次的时间点
2026 年 10 月 13 日凌晨 01:15:40(UTC+8)前后十分钟内,账号被标记。
我的实例在 01:10 左右一次 git push 还正常返回了 Everything up-to-date,到了 01:2x,同一个 remote 开始报 403。
被封之后的状态和上次一样:个人主页 404,仓库页面 404,没有任何「账号已暂停」的横幅,也没有邮件通知我封禁理由。一个在平台上活跃了一年、提交过上千次 commit 的账号,从外部看起来就像从来没存在过。
0x01 我是怎么撞上这件事的
我有数个 Git 实例,他们都从 Github 我的公开仓库同步数据。第一次报错我以为是 token 过期,重新生成一个,还是 403。换成 SSH,报 Permission denied。这时候我才打开浏览器,然后看到了那个熟悉的 404。
上一次我是在登录第三方服务的时候被弹回主页才发现的,这次是在自己的构建流程里撞上的。两次都没有收到任何解释。
0x02 这次丢了什么
比上次少,但也不少。
- OAuth 授权。 Cloudflare ZeroTrust、Qwen Chat、Vercel,都直接绑着 GitHub 登录
- Pages 上挂着几个静态小页面。 纯粹是想省一台机器,现在重新挪回自己的服务器
- issue 里几年攒下来的问答。 有些是别人提问、我回复的技术细节,我自己都没备份,现在跟着账号一起消失了
唯一让我稍微安心的是,去年那次之后我给自己定了条规矩:任何一个仓库都不能只在一个地方有副本。所以这次丢的只是平台上的元数据,代码本身还在。这条规矩是这一年里我做的最值的一件事
0x03 为什么这次不申诉了
申诉通道的设计目的,是让用户有机会说明情况。实际使用起来的感受,更像是填写一张「请证明你还想留在我们平台上」的表格:回答几个问题,提交,然后等。
等的过程里你不知道走到哪一步了,不知道封禁触发了哪条规则,恢复之后也依然不知道为什么被封过。你唯一能做的是猜,然后改掉你认为可能是原因的东西。
更让人不想继续的地方在于成本结构。我是免费用户,仓库都是公开的,删掉我对平台没有任何损失,申诉对我的意义却是不拿回代码就丢掉几年的痕迹。这种不对等不是我一个人能改变的,我也没兴趣再花几个星期去验证一次。
去年我写「Microsoft 收购的产品没有一个是活得更好的」,这一年里 GitHub 没有让我改口。
0x04 搬去哪里
去年的迁移是临时找地方塞,这次的路线清楚多了。
自建 Forgejo 一台小机器跑 Docker 版 Forgejo,在我家的实例(从 Gogs 升级 Gitea 再到 Forgejo)已经稳定运行六年了,所以我根本不担心
公开项目撇了 Codeberg 由非营利组织 Codeberg e.V. 运营,底层同样是 Forgejo,但是只接受 FOSS Project。我不开发大量 FOSS Project,况且它运行在洋垃圾上,似乎没有我用的 9950x 好一些。
静态页面放 S3 这个博客、还有我的主页,我现在都丢到 S3 了,省钱小妙招。
迁移过程中唯一让人意外的地方是顺利。仓库、issue、release 都能导,不过有限额拦截(操你妈 Github),也没有任何挽留流程。一个平台在赶人走的时候,效率通常是最高的。
0x05 所以,尽快远离 GitHub
我不想把这篇写成产品推荐,所以下面只讲我实际在做的几件事,都不复杂。
- 代码同时放两个地方。 主仓库在自建 Forgejo,GitHub 想留就留一份,只当分发渠道,不当唯一副本
- CI 尽量能在本地跑。 部署脚本写成普通的 shell 和 Makefile,放在 Forgejo Actions 或者 GitHub Actions 里只是换个入口。这样哪天平台没了,你在自己电脑上照样能构建
- 少用 GitHub OAuth 登录别的东西。 每多绑定一个服务,就多一条被封时跟着一起断的链。能用邮箱和 passkey 的就别用第三方
- 定期做一次脱离平台的备份。
git bundle出一份完整仓库,连同 issue 导出丢到别的地方。听着很土,但它是我这次唯一没丢东西的原因 - 包管理也一样。 npm、crates、容器镜像,能自建 registry 就别只依赖公共平台。Forgejo 自带 package registry 够用了
自托管不是免费的。你得买机器、配证书、盯监控、处理磁盘满了、半夜爬起来看为什么服务挂了。
这些活是可预期的成本,平台的封禁不是。前者花的是时间,后者花的是你几年积累的东西,而且不给你理由。
去年那篇文章的结尾我写的是「(未完待续,欢迎留言)」。这次不用等后续了,后续已经在 0x03 里写完了。
如果你现在还在把 GitHub 当作代码的唯一住处,不用今天就搬完,但今晚可以先把仓库镜像一份到别处。两条 git push 的事,比写申诉小作文便宜多了。
So Github & Microsoft, fuck you!