使用两个github账号

今天看到公司现有项目的版本管理一塌糊涂,所以打算重新建一个git库。原本电脑上有一个个人的github账号,然后新建的项目是在工作账号上。遇到一个问题。无法提交到github上,提示

1
“ERROR: Permission to XXX.git denied to user”

然后在网上找了一堆答案,大概意思就是没有权限,猜测,应该是已保存的github账户,没有修改这个项目的权限。

算了,也不解释过程了,就大概说一下我是怎么做的吧。放弃使用https获取git,采用ssh。看网上说好处有一大堆。

第一步生成一对密钥,私有和公有。分别执行两个,名称两次要不同,不然会覆盖。

1
ssh-keygen -t rsa -C "your-email-address"

把公有密钥添加到github里,私有密钥添加到ssh-agent列表里

1
ssh-add "~/.ssh/id_rsa"

可能会出现Could not open a connection to your authentication agent,执行如下命令即可:

1
ssh-agent bash

还有一些可能会用到的ssh命令,参考这里

如果之前有默认账号,来解绑全局账号。

1
2
3
git config --global --unset user.name #取消全局设置
git config --global --unset user.email #取消全局设置
git config -l #查看当前目录的git config

再分别去不同的项目目录中,设置这个目录中项目对应的账号。

1
2
git config user.name "newname"
git config user.email "newemail"

接着要写一个配置表,在./ssh文件下,新建一个config文件,#符号后的删除

1
2
3
4
5
6
7
8
9
10
11
12
13
14
Host github.com #第一个账号
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/kee_id_rsa #私有密钥地址
TCPKeepAlive yes
IdentitiesOnly yes
Host github.com.gu #第二个账号,任意写
HostName github.com
User git
Port 22
IdentityFile ~/.ssh/gu_id_rsa
TCPKeepAlive yes
IdentitiesOnly yes

对应的ssh地址改成上面的写的那个,例如原本是git@github.com:keefor/aaaa.git 改为 git@github.com.gu:keefor/aaaa

OK,就这样。其实很多东西并没有你想的那么难。