如何在一台电脑上管理多个 GitHub 账号
在一台电脑上管理多个 GitHub 账号(例如一个私人账号和一个工作账号),最优雅且标准的解决方案是使用 SSH Config。
这避免了每次 push 代码时都要输入密码或切换 Token 的麻烦。以下是完整的配置步骤:
核心思路
我们将生成两对不同的 SSH Key,然后利用 ~/.ssh/config 文件告诉 Git:
- 当连接
github.com时,使用密钥 A。 - 当连接
github-work(别名)时,使用密钥 B。
第一步:生成两对 SSH Key
打开终端(Terminal/Git Bash),分别为两个账号生成密钥。注意:在提示输入文件名时,不要一路回车,要给它们起不同的名字。
- 生成私人账号密钥:
ssh-keygen -t ed25519 -C "personal@email.com"
# 提示 Enter file in which to save the key 时,输入:
# ~/.ssh/id_ed25519_personal
- 生成工作账号密钥:
ssh-keygen -t ed25519 -C "work@company.com"
# 提示 Enter file in which to save the key 时,输入:
# ~/.ssh/id_ed25519_work
现在你的 ~/.ssh/ 目录下应该有 4 个文件(两个 .pub 公钥,两个私钥)。
第二步:将公钥添加到 GitHub
- 复制公钥内容:
cat ~/.ssh/id_ed25519_personal.pub - 登录私人 GitHub 账号 -> Settings -> SSH and GPG keys -> New SSH key -> 粘贴。
- 重复上述步骤,把
id_ed25519_work.pub添加到你的工作 GitHub 账号。
第三步:配置 Config 文件(最关键的一步)
在 ~/.ssh/ 目录下创建或编辑 config 文件:
vim ~/.ssh/config
在文件中添加以下内容:
# --- Personal GitHub ---
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_personal
# --- Work GitHub ---
Host github-work
HostName github.com
User git
IdentityFile ~/.ssh/id_ed25519_work
解释:
Host是你将在 Git 命令中使用的别名,而HostName始终是真实的域名github.com。
第四步:测试连接
在终端运行以下命令,看看是否能正确识别身份:
ssh -T git@github.com
# 应输出: Hi [PersonalUserName]! You've successfully authenticated...
ssh -T git@github-work
# 应输出: Hi [WorkUserName]! You've successfully authenticated...
第五步:如何使用(Clone 和 Push)
场景 A:使用私人账号(默认)
像平时一样操作,不需要改变:
git clone git@github.com:username/repo.git
场景 B:使用工作账号(使用别名)
你需要把原来的 github.com 替换成你在 config 里写的别名 github-work:
# 原地址: git@github.com:company/project.git
# 改为:
git clone git@github-work:company/project.git
(对于已有的仓库,可以使用 git remote set-url origin git@github-work:company/project.git 修改)
进阶技巧:自动区分提交者邮箱 (git config)
解决了 SSH 认证,还有一个问题:Commit 记录里的邮箱。如果不设置,Git 会使用全局配置(Global Config),导致你用私人邮箱提交了公司代码。
方法 1:手动设置(每个仓库设置一次)
在公司项目的仓库目录下:
git config --local user.name "Work Name"
git config --local user.email "work@company.com"
方法 2:按文件夹自动切换(推荐给开发者)
你可以配置 Git,让它根据文件夹路径自动加载不同的配置。
假设你把所有工作项目都放在 ~/Work/ 目录下:
- 编辑全局配置
~/.gitconfig,添加:
[includeIf "gitdir:~/Work/"]
path = ~/.gitconfig-work
- 新建文件
~/.gitconfig-work,写入工作专用配置:
[user]
name = Your Work Name
email = work@company.com
这样,只要你在 ~/Work/ 目录下操作,Git 就会自动使用工作邮箱,无需手动设置。
作者:削微寒
扫描左侧的二维码可以联系到我

本作品采用署名-非商业性使用-禁止演绎 4.0 国际 进行许可。


浙公网安备 33010602011771号