为同一个电脑,配置多个 git 账号,其整体流程如下:

  • 清空默认的全局 user.nameuser.email
  • 为不同的 git 账户生成不同的 ssh-key
  • 将以上的 ssh-key 分别添加到 ssh-agent 信任列表
  • 添加以上的公钥到自己的 git 账户中
  • config 文件配置多个 ssh-key
  • 测试

清空默认的全局 user.nameuser.email

1
2
git config --global --unset user.name
git config --global --unset user.email

为不同的 git 账户生成不同的 ssh-key

id_ras 是默认的文件名称,我们现在需要生成不同的 ssh-key,所以要设置不同的文件存储对应的公钥,比如:自己的 GitHub 账户,使用 id_ras_github 命名;公司的账户,使用 id_ras_company 来命名

1
2
ssh-keygen -t id_ras_github -C "xxx@xx.com"
ssh-keygen -t id_ras_company -C "xxx@company.com"

ssh-key 分别添加到 ssh-agent 信任列表

1
2
ssh-add ~/.ssh/id_ras_github
ssh-add ~/.ssh/id_ras_company

如果看到 Identitiy added: ~/.ssh/id_ras_github,就表示添加成功了。

添加公钥到自己的 git 账户中

使用命令,copy公钥,到 git 账户中粘贴即可。

1
pbcopy < ~/.ssh/id_ras_github.pub
1
pbcopy < ~/.ssh/id_ras_company.pub

config 文件配置多个 ssh-key

在 .ssh/ 目录下,config文件(没有的话新建一个)

1
2
3
4
5
6
7
8
9
10
11
#公司
Host company.gitee.com
Hostname gitee.com
IdentityFile ~/.ssh/id_rsa_github
User company

#个人
Host me.gitee.com
Hostname gitee.com
IdentityFile ~/.ssh/id_rsa_company
User me

测试

测试:ssh -T git@{config里面的user}.xxx主机名

1
ssh -T git@company.gitee.com

出现以下,则说明成功!

1
Hi user.name! You've successfully authenticated.but GITEE.COM does not provide shell acess

最后:

在不同的代码仓库进行代码提交时,记得检查用户名和邮箱,以免混淆。设置用户名和邮箱的命令如下:

1
2
git config --local user.name xxx
git config --local user.email xxx@xxx.com