刚到新公司,公司拥有自己的gitlab服务器,在配置完公司发的gitlab账号后,发现原本电脑上关联的github被新生成key覆盖而不能提交代码,也就是push冲突了。于是花了点时间研究了下在同一电脑上同时配置自己的git账号和公司的gitlab账号。
我们知道git关联远程库是根据电脑上生成的key即./ssh文件下的id_rsa_pub和git bush配置的email。
1.配置邮箱和用户名
# 全局配置,Github仓库中默认使用此配置
git config --global user.name 'echoLC' && git config --global user.email 'echoLC@gmail.com'
# 公司的gilab配置,每次有新的gitlab需要添加,执行下如下命令
git config --local user.name 'lc' && git config --local user.email 'lc@xx.gitlab.com'
2. 生成 ssh key 上传到 Github/Gitlab
# 生成公钥、密钥的同时指定文件名,Gitlab使用
ssh-keygen -t rsa -f ~/.ssh/id_rsa.xx.gitlab -C
"lc@corp.gitlab.com"
# 生成默认,Github使用
ssh-keygen -t rsa -C "echoLC@gmail.com"
执行完命令后.ssh目录下会除了生成id_rsa和id_rsa.pub,还会多出 id_rsa.xx.gitlab和id_rsa.xx.gitlab.pub,这是放到gitlab上的key。
3.配置 config 文件
在 ~/.ssh目录下,如果不存在,则新建 touch ~/.ssh/config文件 ,文件内容添加如下:
Host *.gitlab.com
IdentityFile ~/.ssh/id_rsa.xx.gitlab.pub
User echoLC
配置完成后把key分别上传到github和gitlab上就ok了。
验证是否配置成功
由于每个托管商的仓库都有唯一的后缀,比如 Github的是 git@github.com:*,所以可以这样测试:
ssh -T git@github.com
Hi echoLC! You've successfully authenticated, but GitHub does not provide shell access.
ssh -T git@gitlab.dev
Welcome to GitLab, lc!
看到上面的Welcome信息说明配置是Ok的。