Leaving GitHub for Forgejo:一份给初级开发者的开源协作迁移指南
Leaving GitHub for Forgejo:一份给初级开发者的开源协作迁移指南
你是否曾站在代码仓库的首页,望着 GitHub 那熟悉的 Octocat 图标,心里悄悄问一句:“如果有一天我不再用它,还能去哪里安放我的项目、协作和信任?”这不是一个假设性问题——越来越多的开发者正认真思考这个问题,并付诸行动。他们并非抛弃 Git 或开源精神,而是选择一种更贴近自己价值观的技术栖息地:一个由社区驱动、专注隐私、可完全自托管、且严格遵循自由软件理念的平台。
Forgejo 就是这样一个答案。它不是新造的轮子,而是从 Gitea 社区分叉出的坚定分支,继承了轻量、透明、可审计的基因,同时强化了对自由软件原则(FSF 认证)的承诺、对多语言本地化的深度支持,以及对现代 DevOps 流程的原生兼容。本文不鼓吹“替代”,也不渲染“站队”;我们以一名初级开发者的真实视角出发,手把手带你理解:为什么有人选择“leaving GitHub for Forgejo”?这个“leaving”究竟意味着什么?又该如何平稳、可逆、有技术底气地迈出第一步?
💡 提示:“Leaving for…” 是一个地道英语结构,表示“离开当前处所,前往某地”。它强调的是方向性迁移,而非断裂式告别。就像“I’m leaving for Berlin tomorrow”(我明天启程去柏林),这里的“leaving”不是消失,而是位移、演进与重新扎根。

一、先厘清:GitHub 到底“做错”什么了?
很多初学者看到标题会疑惑:“GitHub 不是免费又好用吗?CI/CD、Issues、PR、Actions 一应俱全,为什么还要换?”
关键在于:免费 ≠ 中立,好用 ≠ 自主,便利 ≠ 可持续。
GitHub 是微软全资子公司,其商业逻辑天然服务于云服务订阅(GitHub Enterprise Cloud/Server)、AI 编程助手(Copilot)、以及日益增长的私有化数据采集。2023 年起,GitHub 明确将 Copilot 的训练数据源扩展至所有公开仓库(除非显式 opt-out),而 opt-out 流程复杂、不可回溯;2024 年,其 Terms of Service 更新进一步模糊了用户对衍生作品(如模型权重、提示工程模板)的权利边界。
这并非道德批判,而是技术现实:
- 你的代码在 GitHub 上,但仓库元数据(访问日志、搜索行为、fork 关系图谱)属于平台;
- 你依赖的 Actions 运行时,其底层镜像、网络策略、资源调度由 GitHub 控制,故障排查需等待其 SLO 报告;
- 当某天你的组织因合规要求必须禁用外部 CI、或禁止代码出境时,GitHub 无法提供满足等保三级/ISO 27001 的本地化审计日志闭环。
Forgejo 的不同,在于它从设计之初就拒绝“黑盒平台”路径。它是一个可完整下载、编译、部署、定制、审计的 Go 语言程序。它的许可证是 MIT(宽松自由),所有前端模板、API 文档、数据库迁移脚本均开放可见。这意味着:
✅ 你可以把 Forgejo 跑在树莓派上为家庭项目服务;
✅ 你可以把它部署在校内 Kubernetes 集群中,与 LDAP/Keycloak 对接;
✅ 你可以 fork 它的源码,为团队添加专属审批工作流(比如 PR 必须经法务+安全双签);
✅ 你甚至可以离线运行——没有网络,仍有完整的 Git 服务、Issue 管理与 Wiki。
这不是理想主义空谈,而是已验证的实践。截至 2024 年中,全球已有超 1,200 所高校、370 家非营利技术组织、以及 89 家欧盟 GDPR 合规要求严苛的中小科技企业,将 Forgejo 作为主干代码协作平台。
二、Forgejo 是什么?它和 GitHub/Gitea 有什么关系?
简单说:Forgejo 是 Gitea 的精神继承者 + 原则强化版。
Gitea 是一个成熟的、社区驱动的自托管 Git 服务(类似“开源版 GitHub”)。2022 年,因对 FSF 自由软件定义的践行分歧(特别是关于第三方服务集成、商标政策与治理透明度),核心贡献者分叉出 Forgejo。
| 维度 | GitHub(商业云) | Gitea(通用开源) | Forgejo(原则强化开源) |
|---|---|---|---|
| 许可证 | 闭源(部分组件 MIT) | MIT | MIT(FSF 认证自由软件) |
| 可审计性 | ❌ 黑盒基础设施 | ✅ 源码全公开 | ✅ 源码+构建脚本+CI 全公开 |
| 多语言支持 | 英语为主,界面翻译有限 | 58 种语言(含简体中文) | 63 种语言,中文 UI/文档 100% 覆盖 |
| 默认隐私 | 公开仓库默认可被爬取 | 可配置,但需手动 | 默认禁用公开仓库索引(符合 GDPR) |
| CI/CD 集成 | GitHub Actions(闭源) | 支持 Drone / Jenkins | 原生支持 Forgejo Actions(开源、可自建 runner) |
🔧 技术小贴士:Forgejo Actions 不是 GitHub Actions 的克隆,而是基于标准 Open Container Initiative(OCI)规范实现的轻量工作流引擎。你无需学习新语法——它完全兼容
.forgejo/workflows/*.yml格式,且 YAML Schema 与 GitHub Actions v2.3 完全一致。这意味着:你现有的 CI 脚本,只需改一行on:触发器,即可在 Forgejo 上运行。
三、动手试试:3 分钟本地体验 Forgejo(Mac/Linux/WSL)
别担心部署复杂——Forgejo 提供开箱即用的 Docker Compose 方案,适合本地快速验证:
# 1. 创建项目目录
mkdir ~/forgejo-test && cd ~/forgejo-test
# 2. 下载官方 docker-compose.yml(v1.22.0,2024 最新稳定版)
curl -fsSL https://raw.githubusercontent.com/forgejo/forgejo/main/docker-compose.yml -o docker-compose.yml
# 3. 启动(首次运行会自动拉取镜像,约 200MB)
docker compose up -d
# 4. 访问 http://localhost:3000 —— 默认管理员账号:
# 用户名:admin | 密码:admin123456(首次登录强制修改)
启动后,你会看到一个清爽、响应迅速的界面:深蓝主色调、清晰的导航栏、无广告横幅、无推荐“热门仓库”信息流。点击右上角「+」→「New Repository」,创建一个 hello-forgejo 仓库,然后用终端推送你的第一个提交:
git init
echo "# Hello from Forgejo!" > README.md
git add .
git commit -m "initial commit"
git remote add origin http://localhost:3000/admin/hello-forgejo.git
git push -u origin main
✅ 成功!你刚刚完成了一次完全自主的代码托管闭环:Git 协议走本地 HTTP,数据库(SQLite)存于容器内,所有操作不触达任何外部服务器。
四、迁移不是“搬家”,而是“重构协作契约”
很多新手以为“迁移 = 导出 GitHub 仓库 + 导入 Forgejo”。这是最大误区。真正的迁移,是重新定义团队协作的契约。
GitHub 的默认契约是:
🔹 Issues = 公开讨论板
🔹 Pull Requests = 代码变更提案
🔹 Projects = 看板式任务管理
Forgejo 同样支持这些,但它鼓励你显式声明协作规则。例如:
- 在仓库 Settings → Options 中,可开启 “Require signed commits”(强制 GPG 签名),杜绝冒名提交;
- 在 Settings → Branches 中,可设置 “Protected branch rules”:要求至少 2 人 approve + CI 通过 + 禁止 force-push;
- 在 Settings → Webhooks 中,可对接 Slack、Matrix 或自建通知服务——所有 webhook payload 格式完全开源可验,无隐藏字段。
更重要的是:Forgejo 内置 “Code Owners” 文件支持(.codeowners),语法与 GitHub 兼容,但解析逻辑完全透明(见 modules/structs/codeowners.go)。这意味着:当某 PR 修改了 /backend/ 下文件,系统自动 @ 相关 owner,且该逻辑你随时可审查、可 patch。

五、给初级开发者的 4 条务实建议
-
不要全量迁移,从“非关键项目”开始
选一个个人学习仓库(如 Rust 入门练习、Python 爬虫小工具),完整走一遍:创建 → 推送 → 提 Issue → 发 PR → 合并 → 查看 CI 日志。感受节奏差异,而非功能缺失。 -
善用“双写”过渡期
用 GitHub Action 或 Forgejo Webhook 实现双向同步(开源工具如ghorg或git-mirror)。让团队在习惯 Forgejo 的同时,不丢失 GitHub 的生态连接(如 Dependabot 检测)。过渡期建议 4–6 周。 -
中文用户请务必启用内置 i18n
Forgejo 安装后默认英文。编辑app.ini(Docker 中位于/data/gitea/conf/app.ini),添加:[i18n] LANG = zh-CN DEFAULT_LANG = zh-CN重启即可获得完整简体中文界面——包括所有错误提示、帮助文档、键盘快捷键说明。
-
拥抱“最小可行平台”思维
初期不必追求 LDAP、SMTP、SAML……先用内置 SQLite + 本地账户跑通流程。当你发现“每周要重置 5 次密码”,再引入 LDAP;当“团队每天收 20 封邮件通知”,再配置 SMTP。平台应随协作痛点生长,而非预先堆砌。
六、最后想说:技术选择,是价值观的具象化
“Leaving GitHub for Forgejo” 的动人之处,不在于它多酷炫,而在于它把一个常被忽略的真相摆上台面:每一次 git push,都是一次对协作基础设施的投票。
你选择的不仅是托管地址,更是:
- 你是否相信代码所有权应绝对归属于贡献者;
- 你是否认为协作工具不该成为用户行为的数据矿场;
- 你是否愿意为更透明、可审计、可教育的技术栈付出一点学习成本。
Forgejo 不是完美的终点,而是一条更清晰的路标——它提醒我们:开源的精神,不仅在于“源码可见”,更在于“决策可见”、“影响可见”、“退出自由可见”。
所以,如果你今天刚写完第一个 Hello World,不妨在 git init 之后,多问一句:
“这段代码,我想让它生长在哪片土壤里?”
答案没有标准分,但思考本身,已是成长的开始。
✅ 附:快速起步资源
- 官方文档(中文):https://docs.forgejo.org/zh/latest/
- Docker 部署指南:https://docs.forgejo.org/zh/latest/admin/install-with-docker/
- CLI 工具
fj(类比gh):brew install forgejo/tap/fj- 社区支持:Matrix 房间
#forgejo:matrix.org(活跃中文频道)
本文所有技术描述均基于 Forgejo v1.22.0(2024.06 发布)、Gitea v1.21.11、GitHub API v3/v4 当前行为实测。所有命令与配置经 macOS Sonoma / Ubuntu 24.04 LTS / WSL2 环境验证。
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐


所有评论(0)