如何在一台电脑上进行多个github账户的配置?
1 生成秘钥
首先需要对自己的多个不同账户生成对应的秘钥.比如我有两个账户分别为jaspershen和shenxt,这时候对两个账户分别生成对应账户,注意一定要区分开,不能后面一个将前面一个覆盖了.
1.0.1 生成jaspershen的秘钥
ssh-keygen -t rsa -C “shenxt1990@163.com”
这时候会在~/.ssh/
(我使用的是mac)文件夹下自动生成两个文件,分别是id_rsa
和id_rsa.pub
.
1.1 生成shenxt账户的秘钥
注意一定要重命名,我们这边将其命名为id_rsa_2
.
ssh-keygen -t rsa -f ~/.ssh/id_rsa_2 -C "kagawabale@163.com"
这时候会在~/.ssh/
文件夹下生成新的秘钥文件,分别是id_rsa2
(秘钥)和id_rsa_2.pub
(公钥).
2 将两个秘钥分别添加到自己对应的github账户中
然后需要将两个秘钥(公钥文件)分别添加到自己对应的账户当中.
使用vi打开公钥文件即可.
vi ~/.ssh/id_rsa.pud#jaspershen账户
vi ~/.ssh/id_rsa_2.pud#shenxt账户
3 编辑配置文件
先确认在~/.ssh/
文件夹中是否存在config
文件,如果不存在,首先创建一个,然后对其进行编辑.内容如下:
# jaspershen
Host github_jaspershen
HostName ssh.github.com
User git
IdentityFile ~/.ssh/id_rsa
# shenxt
Host github_shenxt # 前缀名可以任意设置
HostName ssh.github.com
User git
IdentityFile ~/.ssh/id_rsa_2
需要更改的地方是Host
和IdentityFile
,修改为自己能够识别的内容,以及自己生成的秘钥即可.
注意,HostName一定要是
ssh.github.com
,不然可能会失败.
修改完之后,保存退出,然后在terminal下命令以下命令,看是否正常:
ssh -T git@github_jaspershen
ssh -T git@github_shenxt
如果出现下面结果,说明已经正常工作:
Hi jaspershen! You've successfully authenticated, but GitHub does not provide shell access.
4 配置仓库设置
首先需要删除git配置的全局用户名和邮箱.接着在自己每个项目的仓库中按照需要设置不同的user.name
和user.email
.
4.1 删除全局配置
git config --global --unset 'user.name'
git config --global --unset 'user.email'
4.2 设置local配置
在自己的每个文件夹(repo仓库)下,打开terminal,然后进行设置.
git config user.name `xxx`
git config user.email `xxx@xxx.com`
注意,在设置结束之后,创建git repo(
git init
)的时候,一定要再次检查一下用户名和用户邮箱,如果不对, 需要再次设置.
5 将本地仓库推送到远程仓库(github)
之后再添加远程仓库的时候,就不能直接使用http
的方式了,只能使用ssh
方式.
git remote add origin git@github_jaspershen:jaspershen/example.git # jaspershen account
git remote add origin git@github_shenxt:shenxt/example.git # shenxt account
其中github_jaspershen
或者github_shenxt
就是在配置文件中设置的Host
.
然后使用git remote -v
确认是否连接上.
最后进行推送.
git push origin master
其实,上面的配置文件的意思就是,按照你设置远程仓库时使用不同的Host名称,查找~/.ssh/config
文件使用不同的SSH 文件连接到GitHub。这样你就将是以不同的身份访问GitHub仓库。