由于工作需要,有两个github的账号,需要经常切换账户,下面展示具体操作步骤。
假设我的两个账户信息分别是:
账户名 | 邮箱 |
---|---|
git_aa | aa@git.com |
git_bb | bb@git.com |
准备工作
- 生成两个账户的秘钥
首先设置用户名和邮箱,在Git Bash 的命令行中输入:
git config --global user.name git_aa
没有错误的话继续输入
git config --global user.name aa@git.com
生成秘钥:
切换到.ssh
目录下,执行
ssh-keygen -t rsa -C aa@git.com
输入此命令后,按照提示,输入秘钥的名字和设置的密码;也可以连续输入3次回车,这样就会生成自动命名为id_rsa
和id_rsa.pub
两个文件,这样密码就为空;文件位置在~/.ssh/
下面,其中~
是\home
目录,Windows上在C:\User\UserName
下,MAC上在User\UserName
下。
- 添加秘钥
在.ssh
目录下执行
ssh-add id_rsa
如果报错:Could not open a connection to your authentication agent.
则先执行
ssh-agent bash
之后再执行
ssh-add id_rsa
则执行结果:
Identity added: id_rsa (id_rsa)
- 复制秘钥到git账号里
在github的settings->SSH and GPG keys->New SSH key
中,设置好title,然后把id_rsa.pub
文件中的内容复制上来,点击Add SSH key
。
-
对第二个git账户执行上面1、2、3步的操作,注意生成的密码不能跟第一次的秘钥名相同。假设这两个git账户的秘钥分别为:aa_rsa和bb_rsa。
-
修改config文件
将两个git账户的信息都添加进去,内容如下
# default
Host aa.github.com # 前缀名可以任意设置
HostName github.com
User git
IdentityFile ~/.ssh/aa_rsa
# two
Host bb.github.com # 前缀名可以任意设置
HostName github.com
User git
IdentityFile ~/.ssh/bb_rsa
config文件的规则也很简单,就是在每个Host寻找对应的秘钥。
- 测试是否配置成功
ssh -T aa.github.com
如果出现
Hi git_aa! You've successfully authenticated, but GitHub does not provide shell access.
表示配置成功,再测试bb是否配置成功。
切换账户
假设当前是在git_aa账户下,我们想切换到git_bb账户下,操作如下
- 切换当前用户名和邮箱(可不设置)
git config --global user.name git_bb
git config --global user.email bb@git.com
- 设置远程git
git remote add origin git@bb.github.com:git_bb/xxx.git
其中xxx
表示github上的repository名字
如果提示错误:
fatal: remote origin already exists
则先输入
git remote rm origin
再输入
git remote add origin git@bb.github.com:git_bb/xxx.git
- push
设置好远端后,直接push即可
git push -u origin master
需要注意的是,如果使用软件(Smartgit或者Sourcetree等)进行push时,可能会失败,但使用命令行基本不会有问题。
OK,大功告成!!!