代码托管怎么选:GitHub、GitLab、Gitee 的差别不在功能在合规
三家都能托管 Git 仓库,真正的分水岭是代码存放位置、CI 计费方式和审计能力。涉外业务用 GitHub、内网合规用 GitLab 私有化、国内团队用 Gitee——讲清迁移会丢什么、CI 分钟数怎么算。
代码托管是研发工具里最不该纠结功能的一类——三家都能推送、拉取、开 PR。真正决定选型的是三件事:代码存在谁的机房里、CI 怎么计费、出事能不能审计。前两条是钱和合规,第三条是等保。
一、三种形态的本质差别
| 方案 | 代码位置 | 适合 | 硬约束 |
|---|---|---|---|
| GitHub(SaaS) | 境外 | 开源协作、涉外业务、个人与初创团队 | 政务、金融、涉密项目基本不可用;国内访问不稳定 |
| GitLab(SaaS 或私有化) | 自选 | 中大型研发团队,需要完整 DevOps 链路 | 私有化要自己运维,硬件与人力成本不低 |
| Gitee(SaaS 或私有化) | 境内 | 国内团队、教育与企业内网 | 生态与第三方集成不如前两者丰富 |
| 自建 Git(GitLab CE / Gitea) | 自有服务器 | 强合规、完全自主可控 | 运维、备份、高可用全部自己扛 |
一个常见误区:以为「代码托管在国内就合规」。等保与涉密要求看的是 代码是否存放在符合等级要求的机房、访问是否可审计、权限是否最小化。用国内 SaaS 但把仓库设成公开,问题比放在境外私有仓库更大。
二、CI 分钟数是隐藏账单
现代代码托管的价值一半在 CI/CD。GitHub Actions 按分钟计费(不同 runner 规格倍率不同),GitLab 的 SaaS 套餐含一定额度后按用量计费,私有化则是一次性硬件投入。
| 用量场景 | 每月 CI 分钟数量级 | 说明 |
|---|---|---|
| 5 人小团队,单仓库 | 500–2,000 分钟 | 基本在免费额度内 |
| 20 人团队,10 个仓库 | 5,000–20,000 分钟 | 开始需要考虑额度与并发 |
| 50 人以上,多仓库矩阵构建 | 5 万分钟以上 | 私有化 runner 往往更划算 |
| 含端到端测试与多平台构建 | 按构建矩阵翻倍 | macOS runner 倍率最高 |
分钟数取决于构建频率与单次时长,上表为常见量级参考;具体倍率以各平台当期定价为准。
三、迁移会丢什么
Git 仓库本身好迁(`git clone --mirror` 就行),丢的是仓库之外的东西:
- Issue 与 PR 的讨论历史:多数迁移工具只能保留标题与正文,评论会丢
- CI 配置:`.github/workflows` 与 `.gitlab-ci.yml` 语法不通用,需要重写
- 权限与团队结构:组织、团队、外部协作者要重新配置
- Webhook 与集成:所有第三方钩子都要重配
- 制品与包仓库:CI 产物、私有 npm/PyPI 源需要单独迁
所以迁移决策要在项目早期做。跑了三年的仓库再迁,光是重配 CI 与恢复讨论历史就够一个团队忙一个月。
四、别把「研发管理」和「代码托管」混着买
代码托管解决的是「代码放哪、怎么评审、怎么构建」;研发管理解决的是「需求怎么排、迭代怎么跟、缺陷怎么闭环」。这是两类工具,可以集成但不宜互相替代。
| 能力 | 代码托管自带 | 专业研发管理工具 |
|---|---|---|
| 需求与迭代管理 | 弱(Issue 凑合用) | 强(需求池、迭代、燃尽图) |
| 缺陷跟踪 | 弱 | 强(状态流转、关联版本) |
| 测试管理 | 基本没有 | 强(用例、计划、报告) |
| 代码评审 | 强 | 弱(靠集成) |
| CI/CD | 强 | 弱(靠集成) |
库内研发管理类产品包括 TAPD、PingCode、禅道等;代码托管类包括 GitHub、GitLab、Gitee。选型时按「代码」与「项目」两条线分别评估,再做集成。
五、安全与审计的四个必查项
- 权限模型:能否做到仓库级、分支级、目录级的最小权限;离职人员能否一键回收
- 操作审计:clone、push、权限变更、密钥新增是否都有日志,能否导出留存 6 个月
- 密钥与凭据:是否支持 SSH Key 有效期、访问令牌细粒度权限、密钥泄露扫描
- 分支保护:能否强制代码评审、禁止直推主干、要求签名提交
GitLabGitLab · 软件
参数 →
GGitHub 是开源协作的事实标准;GitLab 提供从代码到部署的完整链路,且支持私有化;Gitee 是国内访问与合规的常用选择;TAPD 代表研发管理侧(需求/迭代/缺陷),与代码托管互补而非替代。
延伸阅读:代码托管与 DevOps 品类页、低代码平台怎么选、中间件品类页。