Yufelix's Blog

Yufelix

如何同时使用GitLab和GitHub?一台电脑搞定!

14
2024-10-10

你是不是也有这样的烦恼?公司用GitLab,个人用GitHub,两个平台的邮箱还不一样,结果SSH Key冲突了,每次切换都得折腾半天。别急,今天教你一招,轻松搞定GitLab和GitHub的同时使用!

为什么会有这个问题?

Git是通过邮箱来识别用户的,不同的邮箱生成的SSH Key也不同。如果你在公司用GitLab,邮箱是[email protected],而个人用GitHub,邮箱是[email protected],那么Git就不知道用哪个SSH Key来验证身份,结果就是push失败。

解决方案:配置SSH的config文件

其实,解决这个问题并不难,只需要配置一下SSH的config文件,让Git知道什么时候用哪个SSH Key就行了。

1. 配置Git用户名和邮箱

首先,我们需要为不同的项目设置不同的用户名和邮箱。比如,全局配置可以设置成你的个人GitHub邮箱,而公司项目则单独配置。

# 全局配置,GitHub默认使用这个
git config --global user.name 'Yufelix' && git config --global user.email '[email protected]' 

# 公司项目配置,每个新项目都要执行一次
git config --local user.name 'Yufelix' && git config --local user.email '[email protected]' 

2. 生成不同的SSH Key

接下来,我们需要为GitLab和GitHub生成不同的SSH Key。默认的SSH Key是id_rsa,我们可以为GitLab生成一个新的Key。

# 为GitLab生成一个新的SSH Key
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "[email protected]"

# 为GitHub生成默认的SSH Key
ssh-keygen -t rsa -C "[email protected]"

执行完这些命令后,~/.ssh目录下会多出id_rsa.gitlabid_rsa.gitlab.pub两个文件。id_rsa.gitlab.pub就是我们要上传到GitLab的公钥。

3. 配置SSH的config文件

现在,我们需要告诉SSH什么时候用哪个Key。在~/.ssh目录下,新建一个config文件(如果还没有的话),然后添加以下内容:

Host corp.example.com
    HostName git.corp.example.com
    IdentityFile ~/.ssh/id_rsa.gitlab
    User Yufelix
  • Host是你命令行中输入的主机名,比如ssh -T [email protected]
  • HostName是实际的主机地址。
  • IdentityFile指定了使用哪个SSH Key。

这样,当你访问git.corp.example.com时,SSH会自动使用id_rsa.gitlab这个Key,其他情况则使用默认的Key。

4. 上传公钥到GitHub和GitLab

接下来,把生成的公钥上传到GitHub和GitLab。

GitHub:

  1. 登录GitHub,点击右上角的头像,选择“Settings”。
  2. 找到“SSH and GPG keys”,点击“New SSH key”。
  3. ~/.ssh/id_rsa.pub文件的内容粘贴进去,起个名字,保存。

GitLab:

  1. 登录GitLab,点击右上角的头像,选择“Settings”。
  2. 找到“SSH Keys”,把~/.ssh/id_rsa.gitlab.pub文件的内容粘贴进去,保存。

5. 验证是否成功

最后,验证一下配置是否成功。

# 测试GitHub
ssh -T [email protected]
# 如果看到“Hi Yufelix! You've successfully authenticated”,说明成功了。

# 测试GitLab
ssh -T [email protected]
# 如果看到“Welcome to GitLab, Yufelix!”,说明成功了。

总结

搞定!现在你可以在同一台电脑上同时使用GitLab和GitHub了,再也不用担心SSH Key冲突的问题了。配置过程虽然有点小复杂,但一步步来,很快就能搞定。赶紧试试吧,相信你会觉得这波操作很值得!