同一台电脑上我的的github帐户如何与公司的gitlab帐户共存

前些天,写了篇博客 开发环境之git:团队协做git工做流与经常使用命令
主要是回顾其中的第一小节基本配置。
可是对于不少程序员而言,咱们不只有公司的gitlab帐户作公司的业务,也会有本身我的的github帐户整理本身的学习代码,如何在同一台电脑上让这两个帐户共存?git

一. 先来看看你可能想到的方式:

1.1 直接把以前生成的 ~/.ssh/id_rsa.pub 文件用相似的方式添加到github网站上。程序员

右上角点击头像 --> 点击settings --> 点击 SSH and GPG keys --> 点击 New SSH key --> 粘贴 id_rsa.pub

当你发现你用ssh的方式拉取github仓库的时候github

git clone git@github.com:用户名/仓库名.git

会提示shell

Cloning into '仓库名'...
ERROR: Repository not found.
fatal: Could not read from remote repository.

Please make sure you have the correct access rights
and the repository exists.

想一想也是,仔细看id_rsa.pub文件 后面跟的是公司邮箱的地址,而你的github帐户是你本身私人邮箱的地址,两个服务器明显都不在一块儿,鉴权和验证都是分开的。这种方式是不行的。服务器


1.2. 无论了,那直接用https的方式总能够吧,能够是能够,可是https的弊端大部分人也都清楚,每次推送代码都须要输入你的github帐户名和密码了,这样很烦ssh


1.3. 从新设置下ide

git config --global user.name "github用户名"
 git config --global user.email "github邮箱"

这样貌似可行?(没亲自试过),但有可能正在本身的github项目中练手,忽然公司项目来了个新bug,你就又要从新设置成公司的用户名邮箱什么的,常常须要这样来回切就有点烦gitlab

2、一劳永逸的方式

以前公司的gitlab帐户的ssh key 是正常的,那就先无论他了,其实咱们要作的就只是再去生成一个新的ssh key 添加到 github帐户上而已。学习

2.1. 生成一个github的ssh key测试

ssh-keygen -t rsa -C "你的github邮箱" -f ~/.ssh/github_rsa

2.2. 输入上面的命令后一路回车,而后到 ~/.ssh 目录下去找,会发现多了两个文件 github_rsa 和 github_rsa.pub。 把github_rsa.pub 按照 1.1 的方式添加到github中去

2.3 在~/.ssh/目录下建立一个config文件,分别配置公司gitlab的ssh key 和 本身我的的 ssh key

Host gitlab
    HostName 公司的代码仓库服务器地址
    User gitlab用户名
    IdentityFile ~/.ssh/id_rsa
Host github.com
    HostName github.com
    User github用户名
    IdentityFile ~/.ssh/github_rsa

其实这里的User并不会有咱们预期的效果,好比你在公司的gitlab用户名通常会取实名的名字,而github是一个随意的昵称。这里并不会让你之后推送代码到gitlab时取 你在这里配置的 gitlab用户名,一样也不会推送到github时取你在这里配置的 github用户名。由于这个其实只是针对ssh key的配置的User,并不会影响你以前经过 git config --global user.name "公司gitlab用户名" 设置的git帐户名

2.4 至此,能够分别测试一下了你的ssh 是否能连通了

ssh -T git@gitlab
ssh -T git@github.com

若是出现相似这样的字段就代表你的ssh key能够用了

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

2.5 强迫症的福音

前面2.3中提到 ~/.ssh/config 文件中的User 并不等同于咱们的git帐户名。
有可能你以前设置过

git config --global user.name "公司gitlab实名"

而后你发现你传代码到github的时候,也是显示的这个实名,让你以为有点不爽。
你能够继续到你本地的github仓库项目文件夹下去设置一个本地的用户名

git config --local user.name "github用户名"

再推送,就能够显示对应的用户名了。

这里何时用global 何时用local 其实取决于你本身用哪一个帐户用得多一点,好比你在公司的电脑上,你就能够把公司的gitlab用户名加 --global 配置,而本身我的的github加 --local。若是你是在你本身家里的电脑上,就能够是相反的操做了。

相关文章
相关标签/搜索