zoukankan      html  css  js  c++  java
  • 同一台电脑上个人的github账户如何与公司的gitlab账户共存

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

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

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

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

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

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

    会提示

    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账户名和密码了,这样很烦


    1.3. 重新设置下

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

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

    二、一劳永逸的方式

    之前公司的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。如果你是在你自己家里的电脑上,就可以是相反的操作了。

  • 相关阅读:
    [zt]【外刊IT评论网】我是如何教我5岁的女儿学编程的
    Three Lines (USACO 2012 US Open, Bronze Division Problem 2)
    my domain
    JQueryDialog(弹出窗口,遮蔽窗口)
    煲耳机
    去掉桌面图标阴影
    RSS有什么用?RSS是什么?
    采用交换机和HUB连接局域网有什么区别?
    电脑经常自动重启的原因
    使用hub(集线器)连接局域网实现文件共享
  • 原文地址:https://www.cnblogs.com/hezhi/p/10317642.html
Copyright © 2011-2022 走看看