通过配置config文件,在一台电脑上区分个人账号和公司账号

802 阅读2分钟

由于公司统一使用私有的gitlab来托管代码,但个人在 Github 上还有一些代码仓库,且两个账号使用的邮箱是不同的,因此生成的SSH key也是不同的,这就造成了冲突,本文介绍如何在一台机器上面同时使用个人账号和个人账号

具体场景

对于Git而言,邮箱是识别用户的唯一手段,因为邮箱不同,导致通过邮件名创建的SSH Key也是不同的,这时候执行push命令的时候,Git不知道应该使用哪个SSH Key,进而导致 push 的失败。场景如下:

  1. 在公司团队使用搭建的 Gitlab 服务,提交邮箱company@xxx.com,个人 Github 服务,提交邮箱personal@qq.com
  2. 有两个Github账户,不同的账户提交不同的仓库内容。

如何解决

基于配置config文件

  • 分别配置公司账号和个人账号
# 全局配置,Github仓库中默认使用此配置
git config --global user.name "xxx" && git config --global user.email "xxx@xx.com"
# 公司项目配置,每次新创建一个项目,需要执行下
git config --local user.name "xxx" && git config --local user.email "xxx@xx.com"
  • 生成SSH Key,并分别上传到对应Github/Gitlab ssh key 默认生成后保存在~/.ssh/目录下 ,分别为gitlab_id_rsagithub_id_rsa两个文件,由于我们需要分开配置,所以这么做:
#创建gitlab的SSH-Key
ssh-keygen -t rsa -C "xxx@xx.com“ -f ~/.ssh/gitlab_id_rsa
#创建github的SSH-Key
ssh-keygen -t rsa -C "xxx@xx.com" -f ~/.ssh/github_id_rsa	

命令执行完成后,这时~/.ssh目录下会多出gitlab_id_rsagithub_id_rsa四个文件,xxx.pub里保存的就是我们要使用的key,这个key就是用来上传到Gitlab和GitHub上的

  • 配置config文件 在 ~/.ssh目录下,如果不存在,则新建 touch ~/.ssh/config文件 ,文件内容添加如下:
#gitlab
Host git.xxx.com
	HostName [这里填gitlab真实地址]
	PreferredAuthentications publickey
	IdentityFile ~/.ssh/gitlab_id_rsa
 
#github
Host github
	HostName github.com
	PreferredAuthentications publickey
	IdentityFile ~/.ssh/github_id_rsa
  • 上传SSH Key到GitHub 登录github --> 点击右上方的头像选择settings图标 --> 点击左边界面的 SSH keys —> 点击New SSH key–> 然后将上面拷贝的 ~/.ssh/github_id_rsa.pub文件内容粘帖到key一栏,再点击“Add SSH key”按钮就可以了

  • 验证是否成功

Hi xxx! You've successfully authenticated, but GitHub does not provide shell access.

看到如上信息,即表明验证成功!