如何解决一台电脑多个git账号关联
Contents
如何解决一台电脑多个git账号关联
1.场景介绍
现在我手中一台电脑,公司用的gitlab仓库,使用的是公司邮箱注册,所以需要我本地git推送时显示是公司的邮箱xx@a.com
,另外我自己的github是用的另一个邮箱注册的xx@b.com
,所以我想要推送公司的gitlab时,使用的是a邮箱,推送github时,使用的是b邮箱。
2.步骤
1.由于我使用公司的仓库较多,所以我把git全局的name和email设置为公司的邮箱和名字(对,git在全局和具体某个仓库的name和email可以是不一样的),然后我要使用github的时候,每git clone下来一个仓库,必须
cd
到该仓库下,然后使用:git config user.name "qiujiang" git config user.email "xx@b.com"
将我github的邮箱配置到这个仓库(也就是每次clone,想要推送的话,就要配置一次)
2.所以全局的配置就该是:
git config --global user.name "qiujiang" git config --global user.email "xx@a.com"
这样在我没有单独设置的仓库就会以这个邮箱和名字推送
3.创建ssh key:
对两个邮箱分别创建一个ssh key: 先:
cd ~/.ssh // 进入目录,该目录下保存生成的秘钥
然后,根据账户邮箱生成秘钥。例如我在GitHub上的邮箱是xx@b.com
,则命令为:
ssh-keygen -t rsa -C "xx@b.com"
输入完成后,会有如下提示:
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/liugui/.ssh/id_rsa):
在分号后输入保存的文件名,例如id_rsa_@b.com_github
* 4.添加私钥到本地,添加公钥到gitlab/github
SSH协议的原理,就是在托管网站上使用公钥,在本地使用私钥,这样本地仓库就可以和远程仓库进行通信。在上一步已经生成了秘钥文件,接下来需要使用秘钥文件,首先是在本地使用秘钥文件:
ssh-add ~/.ssh/id_rsa_@b.com_github // 将GitHub私钥添加到本地
ssh-add ~/.ssh/id_rsa_@a.com_gitlab // 将GitLab私钥添加到本地
公钥的添加,如GitHub对应的公钥在id_rsa_@b.con_github.pub
中,用vim
打开,全部复制,粘贴到GitHub-settings-ssh-key新建ssh-key。
- 5.对本地秘钥进行配置
由于添加了多个密钥文件,所以需要对这多个密钥进行管理。在.ssh目录下新建一个config文件,将一下内容复制进去:
Host github
HostName github.com
User qiu
IdentityFile ~/.ssh/id_rsa_@b.com_github
Host gitlab
HostName gitlab.com
User qiu
IdentityFile ~/.ssh/id_rsa_@a.com_gitlab
- 6.测试 至此,托管网站的公钥添加完成。总结来说,就是针对每个托管网站分别生成一对密钥,然后分别添加到本地和托管网站。
这时候,可以测试一下配置是否成功,测试命令使用别名。例如,对于GitHub,本来应该使用的测试命令是:
ssh -T git@github
- 7.参考链接
https://segmentfault.com/a/1190000016269686
https://blog.csdn.net/jifaliwo123/article/details/79126785
3.补充
配置好多个秘钥及对应的邮箱后,很多人在push代码的时候会出现权限不足,有可能有两个原因:
* 1 clone仓库的时候使用的不是ssh
而是HTTPS
的方式,而git验证公私钥对的时候只是通过ssh方式的,所以选择克隆链接的时候务必切换到ssh方式:
2 如果你恰好选择了HTTPS方式clone,也是有办法解决的,在本地仓库的根目录下有一个.git的隐藏文件,可以修改下面的config文件达到目的: 打开该文件
vi .git/config
可以看到其中的
url
,修改前长这样子。url = https://github.com/user_name/repo_name.git
我们把它修改为:
url = https://user_name:password@github.com/user_name/repo_name.git
用
:
和@
将你的github账号密码写入url,这样带来一些不安全隐患,不过我们普通用户也不必过多在意。
Author 秋酱
LastMod 2018-11-23