多 GitHub 账号与多平台 Git 使用:从入门到进阶的完整指南
适用人群:
Git 新手 / 刚接触多账号的开发者
需要同时使用个人 / 公司 GitHub 账号的人
使用 GitHub + Bitbucket / GitLab 等多平台的人
希望建立长期稳定、可扩展、合规 Git 工作流的团队
一、最基础场景:单账号 + HTTPS(新手默认状态)
1️⃣ 场景说明
-
只有 一个 GitHub 账号
-
使用
https://github.com/...克隆仓库 -
每次 push 需要输入用户名 / token
-
常见于:刚接触 Git 的新手、教学环境
2️⃣ 详细操作步骤
-
在 GitHub 网页端创建仓库
-
复制 HTTPS 地址,例如:
-
本地执行:
git clone https://github.com/organization/repo.git
cd repo
echo test > test.txt
git add .
git commit -m "first commit"
git push -
Git 会提示输入:
-
GitHub 用户名
-
Personal Access Token(不是密码)
3️⃣ 验证方法
git config user.name
git config user.email
确认提交者信息是否正确
4️⃣ 常见使用场景
-
课程练习
-
临时脚本仓库
-
非长期维护项目
5️⃣ 优点
-
简单
-
上手快
6️⃣ 缺点
-
❌ 不支持多账号
-
❌ 凭据容易混乱
-
❌ token 容易误用
7️⃣ 进阶动机
一旦你:
有 公司 GitHub + 个人 GitHub
或开始做开源项目
这个模式必然失效 → 进入下一阶段
二、初级进阶:多账号 + HTTPS(错误示范阶段)
1️⃣ 场景说明
-
有多个 GitHub 账号(例如公司 + 个人)
-
所有仓库仍使用 HTTPS
-
常见报错:
403 Permission denied
2️⃣ 问题本质讲解
HTTPS 模式下:
-
Git 不知道你想用哪个账号
-
只会使用系统缓存里的那个凭据
3️⃣ 常见错误操作
-
删除 Windows Credential / Keychain
-
反复登录 GitHub
-
在一个仓库 push 成另一个账号
4️⃣ 验证问题的方法
git config --list --show-origin
你会发现:
-
Git 并没有记录"账号"
-
账号完全由系统缓存决定
5️⃣ 为什么不推荐继续使用
-
❌ 不可控
-
❌ 不可扩展
-
❌ 极易造成权限事故
6️⃣ 进阶动机
GitHub 官方建议:SSH Key 是正确方向
三、标准进阶:SSH + 单账号(正确起点)
1️⃣ 场景说明
-
使用 SSH Key
-
一个 GitHub 账号
2️⃣ 核心原理
SSH Key = 你的身份
GitHub 通过 Key 识别你是谁
3️⃣ 基本配置
ssh-keygen -t ed25519
-
把
.pub加到 GitHub -
仓库地址使用:
git@github.com:user/repo.git
4️⃣ 优点
-
安全
-
稳定
-
不依赖凭据缓存
5️⃣ 局限
- ❌ 只能绑定一个账号
6️⃣ 进阶动机
当你有 多个 GitHub 账号 → 下一阶段
四、核心进阶:SSH + 多账号(Host 分流)
1️⃣ 场景说明
- 多个 GitHub 账号(个人 / 公司 / 开源)
2️⃣ 关键思想
不同 SSH Host → 不同账号
3️⃣ SSH 配置示例
Host github-gmail
HostName github.com
User git
IdentityFile ~/.ssh/id_github_gmail
Host github-company
HostName github.com
User git
IdentityFile ~/.ssh/id_github_company
4️⃣ 仓库绑定方式
git remote set-url origin git@github-company:org/repo.git
5️⃣ 优点
-
多账号并存
-
不串号
6️⃣ 缺点
- ❌ 每个仓库要单独改 remote
7️⃣ 进阶动机
仓库一多 → 配置成本过高 → 下一阶段
五、高级进阶:目录 = 身份(includeIf)⭐
1️⃣ 场景说明
-
多 GitHub 账号
-
多仓库并存
-
希望做到:
仓库放对目录 = 身份自动正确
2️⃣ 核心思想详解
Git 支持 条件加载配置:
如果仓库路径匹配 → 自动加载对应身份配置
3️⃣ 目录规划(示例)
directory_company/
├── repo-a
├── repo-b
directory_personal/
├── repo-x
4️⃣ 全局配置 ~/.gitconfig(详细步骤)
[includeIf "gitdir:directory_company/"]
path = ~/.gitconfig-company
[includeIf "gitdir:directory_personal/"]
path = ~/.gitconfig-personal
注意:
-
路径必须以
/结尾 -
Windows 路径同样适用
5️⃣ 子配置示例 ~/.gitconfig-company
[user]
name = user_company
email = email_company
[url "git@github-company:"]
insteadOf = https://github.com/
6️⃣ 实际使用示例
cd directory_company
git clone https://github.com/org/repo.git
实际发生:
-
URL 被自动替换成 SSH
-
使用 company key
-
commit 自动带 company 信息
7️⃣ 验证方法
git config user.name
git config user.email
git remote -v
8️⃣ 优点
-
⭐ 自动化
-
⭐ 零手工切换
-
⭐ 企业级标准
9️⃣ 缺点
- 初学者理解成本略高
六、多平台共存:GitHub + Bitbucket / GitLab
1️⃣ 场景说明
-
GitHub 用 SSH 多账号
-
Bitbucket / 阿里云 用 HTTPS
2️⃣ 为什么不会冲突
-
insteadOf只匹配 github.com -
其他域名不受影响
3️⃣ 正确边界
[url "git@github-xxx:"]
insteadOf = https://github.com/
❌ 绝不能写:
insteadOf = https://
七、最终形态:分支保护 + PR(团队合规)
1️⃣ 场景说明
-
main 分支受保护
-
禁止直接 push
2️⃣ 正确流程
feature 分支 → push → PR → Review → merge main
3️⃣ 优点
-
安全
-
可审计
-
CI 友好
4️⃣ 常见误解
Permission denied ≠ 配置错
而是:策略生效
八、终极总结(一句话版)
初级:
- Git 是工具
中级:
- Git 是身份系统
高级:
- Git 是组织协作和安全策略的一部分
你现在的配置,已经是 企业级、可长期使用、不会踩坑的最终方案。
九、推荐给新人的学习路径
-
HTTPS → 理解痛点
-
SSH → 理解身份
-
SSH 多账号 → 理解路由
-
includeIf → 理解自动化
-
PR / 分支保护 → 理解工程治理
本文档可作为:
团队 Git 规范
新人入职文档
多账号配置模板
(完)