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原则强化开源许可证闭源部分组件 MITMITMITFSF 认证自由软件可审计性❌ 黑盒基础设施✅ 源码全公开✅ 源码构建脚本CI 全公开多语言支持英语为主界面翻译有限58 种语言含简体中文63 种语言中文 UI/文档 100% 覆盖默认隐私公开仓库默认可被爬取可配置但需手动默认禁用公开仓库索引符合 GDPRCI/CD 集成GitHub Actions闭源支持 Drone / Jenkins原生支持 Forgejo Actions开源、可自建 runner 技术小贴士Forgejo Actions 不是 GitHub Actions 的克隆而是基于标准 Open Container InitiativeOCI规范实现的轻量工作流引擎。你无需学习新语法——它完全兼容.forgejo/workflows/*.yml格式且 YAML Schema 与 GitHub Actions v2.3 完全一致。这意味着你现有的 CI 脚本只需改一行on:触发器即可在 Forgejo 上运行。三、动手试试3 分钟本地体验 ForgejoMac/Linux/WSL别担心部署复杂——Forgejo 提供开箱即用的 Docker Compose 方案适合本地快速验证# 1. 创建项目目录mkdir~/forgejo-testcd~/forgejo-test# 2. 下载官方 docker-compose.ymlv1.22.02024 最新稳定版curl-fsSLhttps://raw.githubusercontent.com/forgejo/forgejo/main/docker-compose.yml-odocker-compose.yml# 3. 启动首次运行会自动拉取镜像约 200MBdockercompose up-d# 4. 访问 http://localhost:3000 —— 默认管理员账号# 用户名admin | 密码admin123456首次登录强制修改启动后你会看到一个清爽、响应迅速的界面深蓝主色调、清晰的导航栏、无广告横幅、无推荐“热门仓库”信息流。点击右上角「」→「New Repository」创建一个hello-forgejo仓库然后用终端推送你的第一个提交gitinitecho# Hello from Forgejo!README.mdgitadd.gitcommit-minitial commitgitremoteaddorigin http://localhost:3000/admin/hello-forgejo.gitgitpush-uorigin 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 周。中文用户请务必启用内置 i18nForgejo 安装后默认英文。编辑app.iniDocker 中位于/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类比ghbrew install forgejo/tap/fj社区支持Matrix 房间#forgejo:matrix.org活跃中文频道本文所有技术描述均基于 Forgejo v1.22.02024.06 发布、Gitea v1.21.11、GitHub API v3/v4 当前行为实测。所有命令与配置经 macOS Sonoma / Ubuntu 24.04 LTS / WSL2 环境验证。