git进阶01_GitHub 到 GitLab 迁移指南

GitHub 到 GitLab 迁移指南

你已经学完了 GitHub 教程,现在要进入企业级 GitLab 世界。本文档帮你快速理解两者的核心区别。


🎯 一句话总结

复制代码
GitHub  = 开源社区 + 个人开发者
GitLab  = 企业私有部署 + 团队协作

📊 核心区别对照表

维度 GitHub GitLab
定位 开源社区平台 企业级 DevOps 平台
部署方式 只有 SaaS(github.com SaaS + 私有部署(企业内网)
代码可见性 默认公开(开源友好) 默认私有(企业友好)
CI/CD GitHub Actions(独立产品) 内置 GitLab CI/CD
代码审查 Pull Request (PR) Merge Request (MR)
Issue 跟踪 GitHub Issues GitLab Issues + Boards
包管理 GitHub Packages GitLab Package Registry
容器注册 GitHub Container Registry GitLab Container Registry
Wiki 仓库内置 Wiki 仓库内置 Wiki
安全扫描 需要第三方工具 内置 SAST/DAST 扫描

🔄 概念映射表

你在 GitHub 学的概念,在 GitLab 里叫什么:

GitHub 概念 GitLab 对应 说明
Repository (Repo) Project 都是代码仓库,叫法不同
Pull Request (PR) Merge Request (MR) 都是代码合并请求,功能一样
Fork Fork 概念相同,但企业内部很少用 Fork
GitHub Actions GitLab CI/CD 都是 CI/CD 工具
GitHub Issues GitLab Issues 几乎一样
GitHub Pages GitLab Pages 功能类似,配置略不同
Organization Group 都是团队/组织
GitHub CLI (gh) GitLab CLI (glab) 命令行工具
Secrets CI/CD Variables 都是敏感信息管理
Branch Protection Rules Protected Branches 分支保护

🏢 企业为什么更常用 GitLab?

1. 私有部署(最关键)

复制代码
GitHub:
  代码存在 github.com(微软服务器)
  → 企业担心数据安全

GitLab:
  可以部署在企业内网
  → 代码完全自己掌控
  → 满足合规要求(如金融、政府)

2. 一体化 DevOps 平台

复制代码
GitHub 的做法:
  代码托管 → GitHub
  CI/CD → GitHub Actions
  容器 → Docker Hub
  监控 → 第三方工具
  → 需要集成很多工具

GitLab 的做法:
  代码托管 + CI/CD + 容器 + 监控 + 安全扫描
  → 全家桶,一站式解决

3. 权限控制更细

复制代码
GitHub:
  - 仓库级别权限(Read/Write/Admin)
  - 相对简单

GitLab:
  - Group → Subgroup → Project 多层嵌套
  - 保护分支、保护 Tag
  - MR 审批流程可配置
  - 适合大型企业复杂组织架构

🔄 工作流对比

GitHub 工作流

bash 复制代码
# 1. Fork 仓库(或有写权限直接 clone)
git clone git@github.com:your-username/repo.git

# 2. 创建分支
git checkout -b feature/my-feature

# 3. 开发并推送
git add .
git commit -m "feat: 添加新功能"
git push origin feature/my-feature

# 4. 在 GitHub 上创建 Pull Request
# 5. Code Review + 合并

GitLab 工作流(企业内)

bash 复制代码
# 1. 直接 clone(通常有写权限,不需要 Fork)
git clone git@gitlab.company.com:team/project.git

# 2. 创建分支
git checkout -b feature/my-feature

# 3. 开发并推送
git add .
git commit -m "feat: 添加新功能"
git push origin feature/my-feature

# 4. 在 GitLab 上创建 Merge Request
# 5. Code Review + 合并

核心区别

  • 企业内部通常不需要 Fork,直接 clone 就有写权限
  • 合并请求叫 MR,不是 PR
  • CI/CD 配置文件是 .gitlab-ci.yml,不是 .github/workflows/

🛠️ CI/CD 配置对比

GitHub Actions

yaml 复制代码
# .github/workflows/ci.yml
name: CI

on:
  push:
    branches: [main]
  pull_request:
    branches: [main]

jobs:
  test:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3
      - uses: actions/setup-node@v3
        with:
          node-version: 16
      - run: npm install
      - run: npm test

GitLab CI/CD

yaml 复制代码
# .gitlab-ci.yml
stages:
  - test
  - build
  - deploy

test:
  stage: test
  image: node:16
  script:
    - npm install
    - npm test
  only:
    - branches

build:
  stage: build
  image: docker:latest
  script:
    - docker build -t my-app:$CI_COMMIT_SHA .
  only:
    - main

配置文件对比

项目 GitHub Actions GitLab CI/CD
配置文件路径 .github/workflows/xxx.yml .gitlab-ci.yml
触发方式 on: push/pull_request only: branches/tags
运行器 GitHub-hosted / Self-hosted GitLab Runner
变量管理 Secrets CI/CD Variables
缓存 actions/cache cache: 关键字

🔐 认证方式对比

GitHub SSH 配置

bash 复制代码
# 生成密钥
ssh-keygen -t ed25519 -C "your-email@example.com"

# 添加到 GitHub 网站
# 测试连接
ssh -T git@github.com
> Hi username! You've successfully authenticated

GitLab SSH 配置

bash 复制代码
# 生成密钥(完全一样)
ssh-keygen -t ed25519 -C "your-email@company.com"

# 添加到 GitLab 网站
# 测试连接
ssh -T git@gitlab.company.com
> Welcome to GitLab, @username!

区别


📋 常用命令对照

bash 复制代码
# 克隆仓库
github:  git clone git@github.com:user/repo.git
gitlab:  git clone git@gitlab.company.com:group/project.git

# 推送分支
github:  git push origin feature/xxx
gitlab:  git push origin feature/xxx  # 完全一样

# 查看 MR/PR(命令行工具)
github:  gh pr list
gitlab:  glab mr list

# 创建 MR/PR(命令行工具)
github:  gh pr create
gitlab:  glab mr create

# 查看 CI/CD 状态
github:  gh run list
gitlab:  glab ci list

🎯 你需要调整的习惯

从 GitHub 迁移到 GitLab 你需要做的改变
Pull Request 改口叫 Merge Request (MR)
.github/workflows/ 改为 .gitlab-ci.yml
actions/checkout 改为 GitLab CI 的 script
Fork 工作流 企业内通常直接 clone + 分支
GitHub CLI (gh) 安装 GitLab CLI (glab)
Secrets 改用 CI/CD Variables
main 分支 可能叫 master(看公司规范)

🚀 快速开始

1. 注册/登录 GitLab

复制代码
如果你是去公司实习:
→ 公司会给你分配 GitLab 账号
→ 地址通常是 gitlab.company.com 或内网 IP

如果是自己练习:
→ 注册 https://gitlab.com (公共 GitLab)
→ 或者用公司提供的测试环境

2. 配置 SSH(和 GitHub 一样)

bash 复制代码
# 如果你之前已经配置过 GitHub SSH,
# 可以复用同一个密钥,也可以生成新的

# 复用已有密钥
# 把 ~/.ssh/id_ed25519.pub 的内容添加到 GitLab 网站

# 或者生成新密钥
ssh-keygen -t ed25519 -C "your-email@company.com" -f ~/.ssh/gitlab_rsa

3. 配置 Git 用户信息

bash 复制代码
# 如果公司用公司邮箱
git config --global user.name "你的名字"
git config --global user.email "your-name@company.com"

📚 学习路径建议

你已经学完了 GitHub 教程,接下来学习 GitLab 文档时:

复制代码
01-Git核心概念与企业环境配置
  → 跳过 Git 基础(你已经会了)
  → 重点看:SSH 配置(企业环境)、.gitignore

02-企业分支管理策略
  → 重点看:Git Flow、分支命名规范
  → 这是企业最常用的工作流

03-Git工作流实战
  → 重点看:日常开发流程、Commit 规范

04-团队协作与Code Review
  → 重点看:MR 全流程、分支保护

05-企业级CI-CD与代码质量
  → 重点看:.gitlab-ci.yml 配置
  → 这是和 GitHub Actions 最大的不同

06-Git高级技巧与故障排查
  → 重点看:reflog、reset、revert

07-完整实战场景演练
  → 综合练习

🎯 总结

复制代码
你已经掌握的 GitHub 知识:
✅ Git 基础命令(clone, add, commit, push, pull)
✅ 分支管理(创建、切换、合并)
✅ SSH 配置
✅ Pull Request 流程
✅ GitHub Actions 基础

迁移到 GitLab 只需要改变:
📝 PR → MR
📝 .github/workflows/ → .gitlab-ci.yml
📝 GitHub Actions → GitLab CI/CD
📝 gh CLI → glab CLI
📝 公开仓库 → 私有仓库

好消息:Git 命令本身是通用的!你在 GitHub 学的所有 Git 操作,在 GitLab 里完全一样。

现在开始学习 GitLab 教程吧! 👉 01-Git核心概念与企业环境配置