代码托管国产化:Gitee与极狐GitLab选型迁移指南
发布时间:2026/9/19 2:25:45 锦皓数字建站

“有没有国产 GitLab”这个问题我在过去两年里被问过不下十次。问的人里有创业团队的技术负责人有国企项目的外包开发也有刚带着学生做课设的高校老师。大家的诉求出奇一致代码托管得落在国内团队访问要稳定该有的代码评审、CI/CD、权限管理一样不能少最好还别太贵。这篇文章我打算用自己真实做过选型和迁移的经验来讲透这件事。核心对比对象就是 Gitee 和极狐 GitLab 这两条主流路线顺便把 GitCode、Coding、云厂商自带的代码托管也拉出来遛一遛。我会从“为什么需要替代”“功能和费用到底差在哪”“怎么把老仓库平滑迁过去”“迁移后会踩哪些坑”四个层面展开。无论你是准备从 GitHub 搬回国内还是公司要求代码必须存在境内这篇都能给你一份可以直接照着用的答案。1. 先聊清楚为什么需要“国产 GitLab”替代时要看什么1.1 从一次“临时抱佛脚”的选型说起先讲个实际案例。去年有个朋友的公司做内部管理系统用 GitHub 私有仓库托管了大半年。某天客户现场评审要求演示代码仓库和 CI 记录结果会议室内网访问 GitHub 时好时坏演示卡在 clone 页面场面一度很尴尬。会后甲方直接发了份《软件供应链安全自查表》要求代码托管平台必须境内可查、访问可控。这种场景我见过太多次了。所谓“国产 GitLab”本质上是“代码托管平台国产化替代”的一个通俗说法。它不非得是 GitLab 的国内分支而是指所有能在国内稳定运行、服务商在国内有实体、数据合规可控的 Git 托管与服务方案。Gitee 是这里面知名度最高的一家极狐 GitLab 则是一种特殊的存在——它是 GitLab 官方与中国团队合资成立的版本代码主干和上游一致但运营和数据都在国内。选择替代方案不是把仓库搬个家那么简单。你要替团队想清楚代码托管只是入口后面还挂着 Issue 管理、MR/PR 评审、CI/CD、制品库、Pages 静态托管、权限审计这一串东西。迁移一次等于把半个研发协作链路都挪了窝。1.2 选型前必须想清楚的三个问题我建议任何团队在做对比之前先回答下面三个问题不然很容易被厂商宣传带偏。第一个问题你的代码对“私有化部署”有没有硬性要求如果甲方明确说“代码不能出内网”那 SaaS 类平台如 Gitee 公有云从一开始就不在你的候选名单里你只能在极狐 GitLab、Gitee 企业私有化、自建轻量 Git 服务这几条路线里选。如果只是“需要境内 SaaS 稳定性”那选择空间就大很多。第二个问题团队的 DevOps 成熟度在哪个阶段如果你们只是把仓库从 GitHub 搬回国内CI 还在用 Jenkins 外挂那选什么平台差别不大如果你们已经深度使用 GitLab CI/CD、计划把镜像构建和部署都做成流水线那平台对 CI Runner 的原生支持就非常重要。极狐 GitLab 在这块继承的是 GitLab 的完整能力Gitee 则有自己的 Gitee Go两者思路很不一样。第三个问题预算是多少这里要特别提醒一点“免费版可以先跑起来”和“生产环境长期用”是完全不同的两笔账。免费版往往在成员数、仓库体积、制品保留时间上有限制团队人数一上去你迟早要面对付费或者换方案。这三个问题想透了再去看功能对比表才会有的放矢。1.3 国内主流替代方案全景图先给大家一张全景图把市面上能打的国产方案都列出来方案运营主体产品形态一句话定位Gitee码云开源中国SaaS / 企业私有化国内用户量最大的代码托管社区开源项目氛围浓厚极狐 GitLab极狐公司GitLab 合资SaaS / 私有化部署国际版 GitLab 的合规本地化功能最完整GitCodeCSDNSaaS在开发者内容生态上发力适合社区项目展示Coding腾讯云SaaS / 企业版偏研发管理一体化和腾讯云绑定较深云厂商代码托管阿里云 Codeup、华为云 CodeHub等SaaS / 私有化适合已经在云上的企业集成自家云产品方便这里我先不急着说谁好谁坏。横向看下来真正能和“GitLab 替代”这件事正面硬刚的就两家Gitee 和极狐 GitLab。GitCode 目前更多承接的是开源社区展示需求Coding 的产品重心已经从纯代码托管转向一体化研发管理而云厂商的代码托管更像云生态里的一个模块。所以下面我会把 Gitee 和极狐 GitLab 放到显微镜下仔细看。2. Gitee 与极狐 GitLab产品形态、功能和费用深度对比2.1 Gitee开源社区的流量担当也是很多人“从 GitHub 搬回国内”的第一站Gitee 的产品定位一直很清晰它先是国内最大的开源社区然后才是代码托管工具。这也决定了它的性格——做公开仓库、搞开源活动、承接大型开源赛事这些是它的主场。很多高校学生和独立开发者第一次接触国内代码托管用的就是 Gitee因为注册简单、中文界面友好、公开仓库没有人数限制。在私有仓库这块Gitee 免费版限制 5 个成员这一点对个人开发者够用对小团队来说就比较尴尬了。它的企业版分为标准版和旗舰版按人头付费功能上补齐了成员管理、权限分组、企业级审计这些。如果你只是需要“有个私有的 Git 托管能几个人一起开发”Gitee 免费版加少量付费功能通常就能跑起来。Gitee 还有一个杀手锏Gitee Go。这是它自研的 CI/CD 流水线能力可以直接在仓库里配置流水线文件自动完成构建、测试然后部署到服务器或云平台。另外 Gitee Pages 做静态站点托管很方便写完文档或前端页面推送到仓库就能自动发成一个可访问的静态站。不过 Pages 服务目前需要人工审核时效上不像 GitHub Pages 那么即时这个后面踩坑部分我会细说。2.2 极狐 GitLab功能最接近原版 GitLab 的选择私有化部署是它的王牌极狐 GitLab 和 GitLab 的关系可以理解成“同一个发动机换了一个国内组装和售后团队”。它基于 GitLab 的开源核心版和商业版功能做本地化运营界面、操作习惯、API、CI/CD 语法都和海外版 GitLab 完全一致。这意味着你团队里所有会 GitLab 的人上手极狐几乎零成本。极狐产品分两条线一条是 SaaS 敏捷版直接在极狐官网注册账号就能用免费套餐包含 5 个用户、5GB 存储、400 分钟 CI 时长适合个人和小团队的轻量场景另一条是私有化部署的旗舰版也就是大家常说的“装一台服务器跑极狐 GitLab”适合对数据主权和定制化要求高的企业。私有化部署是极狐对标 Gitee 最大的差异化优势。你可以在自己的 Ubuntu 服务器上用 Docker 装一个极狐 GitLab 社区版或旗舰版完全掌控数据、备份、网络策略和集成方式。这个能力对通过等保测评、隐私合规要求严格的企业来说几乎是刚需。而 Gitee 虽然有企业私有化版本但主要走线下商务渠道流程和门槛比极狐自己下载安装包要重不少。2.3 核心功能逐项对比别只看“能不能托管代码”我做了个对比表把大家最关心的几个维度拉出来逐项看对比维度Gitee企业版/SaaS极狐 GitLab旗舰版/私有化仓库管理仓库、分支、Tag 管理齐全GitLab 原生能力功能最接近上游代码评审支持 Pull Request、评论、审查人设置支持 Merge Request、多级审批规则、代码所有者权限模型成员/角色/仓库级权限相对简单支持 Group、Subgroup、Project 多级层级权限继承关系清晰CI/CDGitee Go 流水线配置相对轻量GitLab CI/CD 全功能支持 Runner 注册、多环境部署、安全扫描Pages 静态托管Gitee Pages需人工审核GitLab Pages支持私有化API 开放程度提供 REST API配套较薄完整 REST GraphQL API生态丰富第三方集成Jenkins、企业微信、钉钉等常用集成与 Jenkins、K8s、Prometheus、SonarQube 等生态无缝对接速度快慢国内访问稳定克隆和推送体验好私有化部署速度取决于服务器性能SaaS 版同样国内访问流畅从表里能看出一个关键差异Gitee 的功能是“围绕托管够用且好用”来设计的代码仓库本身不差但在复杂的研发管理场景下扩展能力相对单薄极狐 GitLab 则继承了 GitLab 那种“一个平台管整个 DevOps 生命周期”的野心。如果你的团队已经在用 GitLab Runner 做自动构建部署或者有大量基于 GitLab API 的内部工具极狐几乎是唯一平滑过渡的选择。这里多提一嘴看功能不能只看“有没有”还要看“好不好用”。比如代码评审这件事Gitee 的 Pull Request 做得不差但极狐的 Merge Request 支持合并策略、管道强制通过、讨论解决状态跟踪这些细致规则在大团队协作下差距会很明显。团队规模上来之后代码评审流程的严谨程度直接影响发布质量。2.4 部署方式与费用模式SaaS 和私有化的分水岭费用这块大家都很敏感但又最容易被官网的“免费”字样误导。Gitee 公有云对公共仓库完全免费私有仓库免费版限 5 个成员。如果团队超过 5 人又想用私有库就得开企业版。企业版标准版按年订阅、按成员计费算下来一年几千元起步旗舰版更贵但功能上也加了像安全检测、审计日志这类企业级能力。如果走私有化部署Gitee 走的是授权服务费模式通常还有基础实施门槛不是开箱即用的下载安装。极狐 GitLab 这边SaaS 敏捷版有免费层5 个用户以上就要购买付费层。私有化部署的情况得区分版本社区版CE是免费的功能上比旗舰版少了一部分企业特性比如多级审批、故障注入测试、安全仪表盘这些旗舰版EE按用户数订阅价格接近海外 GitLab 国内版的定价体系。如果你是个人尝试或小型内部项目在自有服务器上用 Docker 跑一个极狐社区版几乎零成本。我的建议是预算有限、成员少、不碰敏感数据直接用 Gitee 免费版或者极狐 SaaS 免费层就够了如果公司有合规要求、代码必须留在内网那就别纠结 SaaaS 和私有化哪个便宜直接把极狐私有化部署或 Gitee 企业私有化放进采购清单。3. 实操落地仓库迁移与日常配置的完整流程3.1 迁移前准备先把自己的“家底”理清楚先泼一盆冷水百分百无损迁移是不存在的。不同的平台在 Issue 体系、Webhook、CI/CD 变量、评审记录这些数据上各有差异迁移前后多多少少会丢一些非核心的东西。所以第一步不是急着 clone而是先做盘点。我一般会在迁移前整理一份仓库清单包含仓库地址、默认分支、是否有 LFS 大文件、Webhook 配置、CI/CD 变量列表、开启的流水线任务以及哪些分支处于受保护状态。这个盘点用处很大它能让你在迁移后逐一对照知道自己哪些东西需要重新配置哪些东西丢了也无所谓。尤其要注意大文件。多数平台对单仓库体积和 LFS 存储有配额Gitee 免费版单仓库限制是 1GB极狐 SaaS 也有相关配额。如果仓库里有几百 MB 的构建产物或旧版本二进制建议在迁移前先清理历史用git filter-repo这类工具把历史大文件从提交记录中摘掉。这一步没做的话推送的时候非常容易被平台拒绝而且排查起来很费劲。3.2 从 GitLab/GitHub 迁移到 Gitee裸仓库镜像转移迁移的核心工具就是 Git 本身的裸仓库镜像命令。这个方法适用于几乎所有 Git 托管平台之间的搬迁我从 GitHub 迁到 Gitee 用过从旧 GitLab 迁到极狐也用过思路完全一致。第一步在本地创建一个裸克隆把源仓库的所有分支、Tag 都拉下来git clone --bare https://github.com/yourname/yourrepo.git cd yourrepo.git第二步在 Gitee 上创建一个同名空仓库然后直接修改裸仓库的 origin 地址并推上去git remote set-url origin https://gitee.com/yourname/yourrepo.git git push --mirror origin这里有个细节git push --mirror会把你本地克隆到的一切都推上去包括所有分支、Tag 和远程跟踪引用。它和git push --all的区别在于--all只推分支Tag 还要单独推所以“--mirror”才是真正的“打包搬家”。推送完成后进 Gitee 仓库页面把默认分支重新设置成原来的主分支比如 master 或 main然后让团队成员重新 clone 新地址就行。旧的 Git 仓库本地 remote 地址会变所以团队每个人都得更新一下远程地址。我习惯写个小脚本统一改避免有人漏改之后误推到旧平台。3.3 私有化部署极狐 GitLabUbuntu 与 Docker 两条路线如果你的目标平台是极狐 GitLab 私有化部署那迁移前第一步是先把极狐实例跑起来。这里我最推荐用 Docker Compose 方式因为安装快、升级方便、备份也简单。以 Ubuntu 服务器为例先确认装了 Docker 和 Docker Compose然后写一个极狐的 docker-compose.ymlversion: 3.6 services: gitlab: image: registry.gitlab.cn/omnibus/gitlab-jh:latest container_name: gitlab restart: always hostname: gitlab.example.com environment: GITLAB_OMNIBUS_CONFIG: | external_url http://gitlab.example.com gitlab_rails[gitlab_shell_ssh_port] 2224 ports: - 80:80 - 2224:22 volumes: - ./config:/etc/gitlab - ./logs:/var/log/gitlab - ./data:/var/opt/gitlab启动命令就一条docker-compose up -d第一次启动需要等几分钟初始化期间可以用docker logs -f gitlab观察状态。初始化完成后访问http://gitlab.example.com第一次会让你设置 root 密码。这里有一个高频问题为什么 SSH 端口要映射成 2224因为宿主机 22 端口很可能被 OpenSSH 占用了把容器的 22 映射成宿主机的 2224用户配置的 SSH clone 地址就会是ssh://gitgitlab.example.com:2224/yourname/repo.git。如果你不想让团队每次都要记非标准端口也可以直接用 HTTP(S) 方式作为主力 clone 协议。另外补充一点内存要求。极狐 GitLab 全家桶对内存不客气官方建议至少 4GB实际跑起来如果还开 Runner8GB 会更从容。我见过有人在 2GB 的机器上硬装结果进程频繁被杀最后只能加 Swap 勉强跑体验相当痛苦。所以机器配置千万别抠。部署完极狐之后仓库迁移就可以用上面 3.2 的裸仓库镜像方法了。把源地址指向旧平台目标地址换成极狐实例上新创建的仓库整个过程和迁到 Gitee 没有区别。唯一要注意的是极狐上创建仓库时会要求选可见性和初始化选项记得不要勾选“初始化 README”否则远程仓库有初始提交本地镜像推送就会被拒绝。3.4 客户端连接SSH 密钥、代码上传与拉取的正确姿势平台换完之后大量开发者的日常工作流也要跟着调整。这里我把最常被问到的操作细节讲清楚。先讲 SSH 密钥。不管是用 Gitee 还是极狐流程都一样本地生成密钥把公钥填到平台个人设置里。生成命令ssh-keygen -t ed25519 -C your_emailexample.com这里推荐用 ed25519比传统 RSA 更安全且长度短如果公司内部安全策略要求 RSA 4096 也可以但新项目优先 ed25519。生成后把~/.ssh/id_ed25519.pub的内容复制到平台的 SSH Keys 设置页即可。然后是代码上传。以 Gitee 为例在 Gitee 上创建新仓库之后本地已有的项目通过下面几步完成首次关联和推送git init git remote add origin https://gitee.com/yourname/yourrepo.git git add . git commit -m init git push -u origin master如果你是从旧平台搬过来的项目已经有.git目录了那就直接改 remotegit remote set-url origin https://gitee.com/yourname/yourrepo.git很多同学会卡在这个细节上改了 remote 之后执行git pull出现“refusing to merge unrelated histories”。这是新旧仓库历史不一致导致的如果你确定两边的历史本来就同源直接拉取时加参数即可git pull origin master --allow-unrelated-histories需要提醒的是加这个参数之前一定要先备份本地分支。团队协作时如果有人对旧仓库有未推送的提交合并前必须先处理干净否则容易制造出混乱的提交历史。如果你用 PyCharm 或 VS Code这两个 IDE 都有 Gitee 插件。PyCharm 里装好 Gitee 插件后在 Preferences 里配置账号就能直接在 IDE 里完成 clone、commit、push、创建 Pull Request 等操作不用切到命令行。VS Code 侧推荐装 GitLens 加 Gitee 官方插件基本可以覆盖日常操作。用 IDE 插件的好处是断点、差异对比和提交记录树都可视化对新手友好很多。3.5 打通 CI/CDJenkins、GitLab Runner 与 Gitee Go 的取舍代码托管搞定之后就是 CI/CD。这是最容易在迁移后翻车的地方因为 Webhook 地址、令牌和流水线配置都会变。先说 Jenkins 场景。很多团队是用 Jenkins GitLab 插件做自动构建的。迁移到新平台后需要在 Jenkins 的“系统管理 - 系统配置”里重新配置 GitLab Connection填入新平台的 API Token。经常有人在这时报错Login failed. Check API token or GitLab version. Log in via Git if the version...。这个问题九成是 Token 权限不对或者填的地址不对。极狐的 API 地址和海外 GitLab 一样是http(s)://你的域名/api/v4如果用的是 Gitee则 Jenkins 侧的 GitLab Connection 配置思路要改成 Gitee 的 API 地址和 Token但功能对应关系有些差异要做适配。再说极狐自带的 GitLab CI/CD。它采用 Runner .gitlab-ci.yml的模式。运维人员在一台或多台服务器上注册 Runnergitlab-runner register \ --url http://gitlab.example.com \ --token 项目或组级token注册完之后项目根目录放一个.gitlab-ci.ymlpush 代码即可触发流水线。这也是热词里“gitlab ci/cd 中 docker 镜像构建与自动化部署实践”那个场景的核心。一个典型的小型流水线长这样stages: - build - deploy build: stage: build image: docker:latest services: - docker:dind script: - docker build -t registry.example.com/myapp:latest . - docker push registry.example.com/myapp:latest deploy: stage: deploy script: - ssh deployserver docker pull registry.example.com/myapp:latest docker-compose up -d注意这里 deploy 阶段直接通过 SSH 去服务器拉镜像并重启服务适合小型项目。生产环境请接 K8s 或专门的部署平台。另外还要注意一个问题如果项目中压根没有.gitlab-ci.yml是否还能触发 Runner答案是可以的前提是你给 Runner 配了 Run untagged jobs 选项。但如果你的 Runner 只是绑定某个项目、且项目里没有流水线配置文件就不会有任何任务跑起来。这个逻辑搞清楚排查“为什么没触发”会快很多。Gitee 这边的 CI/CD 主要靠 Gitee Go。它比 GitLab CI/CD 更偏向“开箱即用”控制台里能选择构建模板配置门槛低但灵活性不如 GitLab CI。如果想用 Jenkins 配合 Gitee可以在 Gitee 仓库里配置 Webhook把 push 事件推到 Jenkins 的触发地址然后 Jenkins 轮询或接收 hook 后构建。这个方法经典但要注意内网穿透或公网可达性生产环境建议用一台公网服务器做 Jenkins 入口。4. 真实踩坑记录这些坑我不希望你重踩4.1 Gitee 侧Pages 审核、批量删库、许可证选择的那些事Gitee Pages 静态托管是个真香功能很多人的个人博客、组件库文档都放在上面。但它有一条和 GitHub Pages 不一样的规定Gitee Pages 服务需要人工审核而且普通用户开通后有服务时间限制。我在帮朋友部署一个前端演示站时提交审核到通过大概花了一个多小时这个速度还能接受但如果你是希望在 CI 里自动发布 Pages就要预留审核时间或者考虑直接上 Gitee 企业版里的 Pages 增强能力。还有一个经常被问到的是“批量删库”。Gitee 的企业管理后台和开源仓库管理里都有删除功能但批量删除并不是所有套餐都开放。免费版用户删除开源仓库需要先到仓库设置里一个一个操作没有提供公开的批量删除 API。如果你在私有化或企业版里维护了大量仓库建议用 Gitee 的 API 脚本定期清理但一定先在测试仓库上验证脚本避免误删。开源许可证选择也是一言难尽。在 Gitee 创建仓库时它会让你选许可证模板。很多小白纠结选哪个我的建议很简单个人作品想让大家自由用就选 MIT想让代码保持开源且衍生作品也必须开源选 GPL-3.0作为公司对外开源项目稳妥起见选 Apache-2.0。选错许可证的后果通常在若干年后才显现比如有人用了你的代码却不按协议开源你想维权但协议选得太宽松或者有冲突那时候就晚了。4.2 极狐 GitLab 侧安装失败、Pending Approval 与域名配置极狐 GitLab 私有化部署最常见的翻车点在服务器配置上。很多人拿一台 2G 内存的云主机跑极狐结果安装后页面无法启动或者过两天 OOM 崩溃。我在 3.3 里说过至少 4G这里再重复一遍如果你真要私有化部署4G 是底线8G 才宽松。如果只是想试玩别折腾私有化了直接用极狐的 SaaS 免费版真的省心。另一个高频问题是注册账号后登录被拦截提示Your account is pending approval from your GitLab administrator and hence blocked。这句话的意思是账号创建后管理员没有马上放行。极狐 SaaS 的个人注册默认是自动通过的但如果你是在私有化部署实例上注册的管理员需要在 Admin 后台找到用户并审核通过。遇到这个提示直接联系管理员放开即可不用慌。域名配置也是一个容易踩的坑。极狐容器内通过external_url配置对外地址如果你是用 IP 访问需要把external_url设成http://192.168.x.x如果你改了服务器 IP记得同步改这个配置并重启容器。很多人 clone 时报地址不对就是 external_url 和实际访问域名不一致导致的。如果后面你配了域名又上了 HTTPS还要额外注意容器内证书路径和 443 端口映射这部分建议直接用官方文档里的 Lets Encrypt 集成省去手动续签的麻烦。4.3 迁移后的连锁问题remote、Webhook、CI 变量一起“失灵”迁移过程中最容易被忽略的是 Webhook 和 CI 变量因为它们不在 Git 仓库里仓库搬过来并不会自动带走。先说 Webhook。旧平台的仓库上可能挂了 Jenkins 触发、企业微信机器人、钉钉群通知等 Webhook。仓库迁移到新平台后这些 Webhook 全部要重新创建。在 Gitee 的“管理 - WebHooks”里可以配置事件类型极狐则在“设置 - Webhooks”里。我的建议是迁移后做一次全量 Webhook 清单梳理对照旧平台的配置逐条重建并做一次测试推送确认回调正常。再说 CI 变量。如果你在极狐或 Gitee 上设置了敏感变量如 kubectl 证书、云平台 AK/SK这些变量同样不会随仓库迁移。迁移后要在新平台的项目设置里重新添加。如果有人嫌麻烦把敏感信息写进.gitlab-ci.yml或者.gitee/workflows这就等于裸奔。敏感凭据必须用平台变量或密钥管理服务这个底线不要破。最后是本地仓库 remote 地址。团队人一多总有漏改 remote 的成员。他们本地代码推不到新平台又不知道去哪查问题。我们当时的做法是在迁移完成后发了一份全员操作手册里面包含一条命令快速修改 remotegit remote set-url origin 新仓库地址除此之外还做了个校验脚本检测本地 remote 是否还指向旧平台如果指向旧平台就告警提示。迁移这种事技术方案不难难的是让团队里的每个人都在同一时间完成切换。4.4 常见问题速查表下面这表是我这些年处理代码托管平台问题时整理出来的高频故障和排查方向你可以直接存下来当速查手册问题现象可能原因排查与解决办法remote: error: File is too large单文件或仓库体积超平台限制用git filter-repo清理历史大文件后重新推送clone 地址总是不对极狐 external_url 配置或 Gitee 仓库地址复制不全检查平台仓库页的 clone 地址极狐确认 external_url 和域名一致SSH 推送报 Permission denied公钥未配置或密钥对应错了账号查看~/.ssh/id_ed25519.pub确保已填到平台个人 SSH KeysJenkins 报 Login failed. Check API token or GitLab versionToken 失效、API 地址错误或权限不足重新生成 API Token极狐注意填/api/v4新平台打开仓库是空的本地明明有代码远程仓库初始化时勾了 README产生了初始提交用git push -u origin master --force但先备份远程数据和本地仓库流水线没有自动执行没有.gitlab-ci.yml或 Runner 未开启 untagged job检查文件命名、Runner 配置和项目 CI/CD 设置Gitee Pages 发布不成功Pages 需要人工审核或部署分支配置错误到仓库 Pages 设置页查看审核状态确认选择正确分支注册极狐私有部署账号后被 Block管理员未审核新用户管理员登录 Admin 后台在用户列表中选择审核通过4.5 关于安全问题的一句补充代码托管平台是高危攻击面不管选了哪一家强烈建议开启登录二次验证。Gitee 和极狐都支持 TOTP 动态口令这个必须全员开启尤其是管理员账号。另外私有化部署的极狐实例建议定期关注上游 GitLab 安全更新历史上 GitLab 曝过不少高危漏洞比如某些版本存在账户接管和任意文件读取问题。修复方案很简单升级到官方修复版本即可但最怕没人盯版本更新。我的习惯是每月固定时间检查一次容器镜像版本和官方发布公告把升级变成例行公事而不是等出事再补。在我个人这几年的实际使用中有一个体会越来越深工具迁移这种事最难的从来不是命令怎么敲而是你想清楚“为什么迁”和“迁完之后团队工作流要变成什么样”。Gitee 更适合重视开源社区氛围、团队规模不大、希望快速上手的场景极狐 GitLab 更适合有私有化部署需求、深度使用 GitLab CI/CD、或者已经有大量 GitLab 生态工具沉淀的团队。最后再分享一个我在迁移后的第二天一定会做的小操作让团队里每个人都把本地仓库删掉重新 clone 一遍。听起来很粗暴但这是检验新平台配置是否真正可用的最快方式。如果重启克隆顺利、权限正确、依赖拉取正常说明这次迁移是真的稳了。
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。