本地电脑如何配置多个 GitHub 账号
场景
当有多个 git 账号时,就比如
主账户:用于个人项目开发
子账户:比如拿来存存 img
,StaticFile
然后用 jsd
加速 等..
又或者 gitlab
问题
多个 Git 账号,但是邮箱不同,且只有一个 id_rsa_pub
公钥,无法绑定多个github账户,这样就会导致有一个账户用不了,当然你可以选择Https,但这将会是繁琐的过程
解决
生成多个不同的公私密钥对,从 config
文件管理它们
查看已有的
密钥
,输入以下命令1
ls ~/.ssh/
可以看到
id_rsa
和id_rsa_pub
,其中id_rsa
是私钥id_rsa_pub
是公钥生成新的公钥,并命名为
id_rsa_pub2
(随便命名,也可以id_rsa_pub_github用户名
,这样就好区分开)输入以下命令1
ssh-keygen -t rsa -f ~/.ssh/id_rsa_2 -C "yourmail@xxx.com"
按三下回车之后就可以发现
.ssh
目录下有我们刚刚生成的id_rsa_2.pub
,复制id_rsa_2.pub
内容到 github 子账户进行绑定在
.ssh
文件夹下新建config
文件并编辑1
2
3
4
5
6
7
8
9
10
11
12
13
14# 默认账户
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa
# 子账户1
Host xiaojia.github.com # Host实际映射到HostName,但密钥文件不同,可自定义
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa2 # <-- 注意这里,修改成你自己自定义的名字
# 子账户2
...测试
ssh
连接是否成功,输入以下命令1
2ssh -T git@github.com
ssh -T git@xiaojia.github.comHi xiaojia! You’ve successfully authenticated, but GitHub does not provide shell access.
出现以上这句话,表示连接成功
接着要注意的地方,也就是 clone 子账户时要注意,原本 clone 的方式是这样的
git clone git@
github.com
:xxx/xxx.git现在改为 git clone git@
xiaojia.github.com
:xxx/xxx.git,对应你config文件里的Host那么问题又来了,git 的用户名和邮箱我配置了全局咋办
这好办,直接取消全局,然后进入项目里面进行单独设置
1
2
3取消用户名和邮箱全局配置
git config --global --unset user.name
git config --global --unset user.emailcd 项目
1
2
3单独配置用户名和邮箱
git config user.name "xxx"
git config user.email "xxx@xxx.com"最后直接 push
1
git push -u origin master
大功告成😁
存在问题
如果已存在的项目发现 push 不上去,那么执行如下命令,如没问题,请忽略!
1 | git remote rm origin |
其实也就是重新关联远程仓库