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

前言

对大多数开发者来说,有时候需要在同一台机器上管理多个 GitHub 账户。例如在以下场景中,我们就需要使用到 GitHub 多账户管理技巧。

白天作为一名员工,为您所在的公司工作,你所在的公司使用 GitHub 企业版或另一个 GitHub 账号(例如work@company.com)管理内部私有仓库,你需要在此账号下提交代码。

晚上在个人账号下修复自己的开源项目。你拥有一个个人 GitHub 账号(例如personal@example.com),用于托管自己的开源项目、学习实验或兼职项目。

此场景下,多账号管理是兼顾职业与个人开发的必要需求。并达到权限分离,隐私保护以及合规要求。

  • 权限分离:公司仓库可能需要严格的访问控制,禁止使用个人账号提交代码。

  • 隐私保护:个人项目与工作项目需完全隔离,避免误操作或信息泄露。

  • 合规要求:企业可能要求使用公司邮箱和账号签署贡献者协议(CLA)。

生成 SSH 密钥

1
2
3
4
5

ssh-keygen -t rsa -b 2048 -C "work@company.com" -f "id_rsa_company"

ssh-keygen -t rsa -b 2048 -C "personal@example.com" -f "id_rsa_personal"

SSH密钥配置

为每个账号生成独立的SSH密钥,并在~/.ssh/config中指定不同仓库使用不同密钥。

1
2
3
4
5
6
7
8
9
10
11
12
13

# 公司账号
Host github-company
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_company

# 个人账号
Host github-personal
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_personal

这是为了避免每次进行 Git 推送时都要输入用户名和密码的麻烦, 我们需要将 GitHub 账户信任我们创建的密钥。

为本地仓库设置 git remote url,user 信息

一旦我们克隆/创建了本地的 Git 仓库,确保 Git 配置的用户名和电子邮件正是你想要的。GitHub 会根据提交(commit)描述所附的电子邮件 ID 来识别任何提交的作者。

要列出本地 Git 目录中的配置名称和电子邮件,请执行 git config user.name 和 git config user.email。如果没有找到,可以进行添加。

修改本地仓库的.git/config文件,确保remote url,user 信息是正确的

对于公司项目:

1
2
3
4
5
6
7
8
9
10
11

......

[remote "origin"]
url = git@github-company:your_org/your_company_project.git #替换github.com 为github-company
fetch = +refs/heads/*:refs/remotes/origin/*
[user]
email = work@company.com #设置为您在公司中的电子邮件地址
name = your_name #设置为您在公司中的用户名
......

对于个人项目:

1
2
3
4
5
6
7
8
9
10
11

......

[remote "origin"]
url = git@github-personal:your_github_id/your_personal_project.git #替换github.com 为github-company
fetch = +refs/heads/*:refs/remotes/origin/*
[user]
email = personal@example.com #设置为您的个人电子邮件地址
name = your_name #设置您的用户名
......

测试

使用git commit检查commit log中的用户信息是否正确,使用git push 尝试push代码到github 代码仓库,检查是否有权限push代码以及commit中包含的用户信息是否正确。

到此我们以及完成github多账号管理的设置工作!

依据正确的主机,添加或更新的本地 Git 目录的 Git remote,选择正确的 SSH 密钥来验证我们的身份。有了以上这些,我们的 git 操作应该可以无缝运行了。

参考文档

如何用 SSH 密钥在一台机器上管理多个 GitHub 账户

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

https://pengtech.net/git/manage_multiple_github_accounts_on_a_host.html

作者

鹏叔

发布于

2025-04-21

更新于

2025-04-22

许可协议

评论