Fork me on GitHub

如何在一台电脑上管理多个 GitHub 账号

在一台电脑上管理多个 GitHub 账号(例如一个私人账号和一个工作账号),最优雅且标准的解决方案是使用 SSH Config

这避免了每次 push 代码时都要输入密码或切换 Token 的麻烦。以下是完整的配置步骤:

核心思路

我们将生成两对不同的 SSH Key,然后利用 ~/.ssh/config 文件告诉 Git:

  • 当连接 github.com 时,使用密钥 A。
  • 当连接 github-work(别名)时,使用密钥 B。

第一步:生成两对 SSH Key

打开终端(Terminal/Git Bash),分别为两个账号生成密钥。注意:在提示输入文件名时,不要一路回车,要给它们起不同的名字。

  1. 生成私人账号密钥
ssh-keygen -t ed25519 -C "personal@email.com"
# 提示 Enter file in which to save the key 时,输入:
# ~/.ssh/id_ed25519_personal
  1. 生成工作账号密钥
ssh-keygen -t ed25519 -C "work@company.com"
# 提示 Enter file in which to save the key 时,输入:
# ~/.ssh/id_ed25519_work

现在你的 ~/.ssh/ 目录下应该有 4 个文件(两个 .pub 公钥,两个私钥)。

第二步:将公钥添加到 GitHub

  1. 复制公钥内容:cat ~/.ssh/id_ed25519_personal.pub
  2. 登录私人 GitHub 账号 -> Settings -> SSH and GPG keys -> New SSH key -> 粘贴。
  3. 重复上述步骤,把 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/ 目录下:

  1. 编辑全局配置 ~/.gitconfig,添加:
[includeIf "gitdir:~/Work/"]
    path = ~/.gitconfig-work
  1. 新建文件 ~/.gitconfig-work,写入工作专用配置:
[user]
    name = Your Work Name
    email = work@company.com

这样,只要你在 ~/Work/ 目录下操作,Git 就会自动使用工作邮箱,无需手动设置。

posted @ 2026-01-20 11:59  削微寒  阅读(13)  评论(0)    收藏  举报