Git 平台实战:GitHub / GitLab / Gitee 与 SSH、Token、多远程同步
平台只是托管,Git 本身不变。真正拉开差距的是认证怎么配、多平台怎么同步、国内怎么加速——这篇把平台侧的高频操作一次讲完。
最后更新:2026-10-30
三句话选平台
- GitHub / GitLab / Gitee 都能托管 Git 仓库,差异在 CI 生态、权限模型、国内访问速度。
- 认证方式:SSH 密钥(日常推送)或 Personal Access Token(HTTPS / API),密码早已不可用。
- 平台只是托管,工作流与 Git 本身不变——换平台不需要重学 Git。
三家平台对比
| 维度 | GitHub | GitLab | Gitee |
|---|---|---|---|
| 定位 | 全球开源社区 | 一体化 DevOps | 国内托管 |
| 免费私有仓库 | 无限(有额度限制) | 无限 | 有限成员数 |
| CI/CD | GitHub Actions | GitLab CI(内置) | Gitee Go |
| 国内访问 | 较慢 | 一般 | 快 |
| 评审术语 | Pull Request | Merge Request | Pull Request |
SSH 密钥:一次配好,长期免密
ssh-keygen -t ed25519 -C "you@example.com" # 生成(一路回车)
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
cat ~/.ssh/id_ed25519.pub # 复制公钥到平台
ssh -T git@github.com # 测试连通- 公钥(
.pub)可以公开,私钥绝不能外传 - 设置位置:GitHub → Settings → SSH and GPG keys;GitLab → Preferences → SSH Keys;Gitee → 设置 → SSH 公钥
- 多账号用
~/.ssh/config为不同 Host 指定不同IdentityFile
Token / PAT:HTTPS 与 API 的钥匙
- GitHub 已移除密码认证,HTTPS 推送必须用 PAT;优先 Fine-grained token,可按仓库与权限收窄
- 权限最小化:只给需要的
repo/contents: write,并设置过期时间 - 存储用凭据管理器或环境变量,不要把 token 写进 URL 提交到仓库
- 一旦泄露立即 revoke;CI 中用 Secrets 注入,不落盘
git config --global credential.helper manager # 首次输入后记住
# 临时克隆(会留在 shell history,不建议)
git clone https://<token>@github.com/you/repo.git一个仓库,多个远程
git remote add gitee git@gitee.com:you/repo.git
# 让 origin 同时拥有多个 push 地址
git remote set-url --add --push origin git@github.com:you/repo.git
git remote set-url --add --push origin git@gitee.com:you/repo.git
git push origin main # 一次推到两个平台
git remote -v # 核对 push 地址也可以保留独立远程,逐个推:git push gitee main。注意:多 push 地址会让失败互相牵连,任一处报错整条命令返回失败。
国内访问慢?四招
- 浅克隆:
git clone --depth 1 <url>,只要最新代码时最有效 - 按主机配代理:
git config --global http.https://github.com.proxy http://127.0.0.1:7890,不要设全局代理 - insteadOf 强制 SSH:
git config --global url."git@github.com:".insteadOf "https://github.com/" - 换托管:国内协作项目直接放 Gitee 或自建 GitLab,从源头解决
PR / MR:术语与流程对照
- 术语:GitHub 叫 Pull Request,GitLab 叫 Merge Request,Gitee 叫 Pull Request——本质相同
- 流程:fork → 切分支 → 推送 → 发起 PR/MR → 评审 + CI → 合并
- 保护分支:main 禁止直接推送,必须走 PR + 评审 + 状态检查
- CODEOWNERS:按目录指定必须评审的人,避免关键模块被绕过
- 合并方式:Merge / Squash / Rebase,团队统一一种,别混用
常见问题
同一台电脑怎么同时用 GitHub 和 Gitee 的 SSH?
给两个平台各生成一把密钥,在 ~/.ssh/config 里为 github.com 和 gitee.com 分别指定 IdentityFile,再分别把公钥加到对应平台。ssh -T git@github.com 与 ssh -T git@gitee.com 都返回成功即可。
推送提示 password authentication was removed 怎么办?
GitHub 已不支持密码推送。改用 SSH 密钥,或创建 Personal Access Token 并在提示密码时粘贴 token;也可以配置凭据管理器 git config --global credential.helper manager,首次输入后记住。
国内 clone 很慢有什么办法?
优先浅克隆 --depth 1;给 GitHub 单独配代理(只对 github.com 生效,不要全局);用 insteadOf 强制走 SSH;国内协作项目直接放 Gitee 或自建 GitLab。