工作需要使用不同的账号来提交不同的项目,所以需要在同一个电脑上设置不同账号

可以参考博客:https://juejin.cn/post/6999630383130083358,但是他这个博客里有一些错误

假设我们注册两个账号的邮箱和github用户名分别为:
email : account1@domain1.com
userName : MyAccount1

email : account2@domain2.com
userName : MyAccount2

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

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

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

为不同的账号生成不同的密钥对

> cd ~/.ssh
> ssh-keygen -t rsa -f id_rsa_account1 -C "account1@domain1.com"
> ssh-keygen -t rsa -f id_rsa_account2 -C "account2@domain2.com"
> ls -l
id_rsa_account1
id_rsa_account1.pub
id_rsa_account2
id_rsa_account2.pub

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

ssh-add ~/.ssh/id_rsa_account1
ssh-add ~/.ssh/id_rsa_account2

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

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

查看公钥

cat id_rsa_account1.pub
cat id_rsa_account2.pub

github页面位置:
右上角 头像 - settings - SSH and GPG keys - 【New SSH key】
image.png

5、在 config 文件配置多个 ssh-key

.ssh/目录下,config文件(没有的话新建一个)
这里面的Hostname,是我们自己定义的域名映射,我们需要使用这个域名来拉取账号对应仓库的代码。

# Account1
Host a1.github.com
Hostname ssh.github.com
IdentityFile ~/.ssh/id_rsa_account1
User MyAccount1

Account2

Host a2.github.com Hostname ssh.github.com IdentityFile ~/.ssh/id_rsa_account2 User MyAccount2

6、测试

此时使用不同的域名访问github,就可以识别到不同的账号

> ssh -T git@a1.github.com
Hi MyAccount1! You've successfully authenticated, but GitHub does not provide shell access.
> ssh -T git@a2.github.com
Hi MyAccount2! You've successfully authenticated, but GitHub does not provide shell access.

7、拉取代码

git clone git@a2.github.com:xxxxx/xxxxxxx.git