Git ssh方式设置两个账号A/B分别配置A--github和B--gitlab已更新

本文写的针对Git有一定的基础的使用者。初学的话可以参考这个系列教程,还有git - 简明指南

首先说一下背景

  1. 两个邮箱 A@gmail.com/B@gmail.com,

  2. 我有两个git账号,一个公司(github)A@gmail.com/,一个自己的(gitlab)B@gmail.com

  3. 目标:提交公司任务到gitlab上,自己写的代码提交到github上

背景结束。

在git克隆(clone)是通常有两种方式的链接,git@和https//

  • https方式需要每次都输入账号和密码

  • git@方式一次配置以后都不需要输入密码

还要说一点,我觉得对新手有帮助,就是git和github和gitlab的关系

git是基础设施,github和gitlab是基础上的建筑物,他俩的方式都是一样的。

就是说只要是你用git配置一下,然后可以直接对github和gitlab进行操作。

我们要做的目标只有一个,让我们在以SSH方式提交的时候邮箱和github或者gitlab对应上。下面开始正题。

  • 生成两个ssh key

  • 把key添加到对应的网站设置里

  • 新增并设置config

  • 测试是否连接成功

  • 对目标项目设置user.name和user.email

  1. 检查是否设置了全局user.name、user.email,用以下命令取消

    1. git config --global --unset user.name

    2. git config --global --unset user.email

    3. 为什么要取消呢,因为我们要把config调到项目级别,提交时识别的是邮箱,你设置了全局,怎么提交都是用的全局设置啊(因为它判断的依据是邮箱)

  2. 生成ssh key

    1. 生成key命令

      1. ssh-keygen -t rsa -C "your_email"
    2. 会提示你输入文件名,你可以输入对应的网址的名称比如,id_rsa_github,表示此key是对应的github网址

    3. 提示你输入密码,直接enter,确认密码,直接enter,这样不输入密码其实比较方便

    4. 这样呢,你在b步骤中输入文件名是的路径就会出现你命名的key,有两个密钥,比如:id_rsa_github,id_rsa_github.pub

    5. 重复以上步骤生成id_rsa_gitlab的key

    6. 如果出现Could not open a connection to your authentication agent的错误,就试着先用以下命令:

      ssh-agent bash

      ssh-add id_rsa_xxx

  3. 把上面得到的.pub结尾的key加到对应的网站设置里,在github和gitlab里加ssh key我想你们一定能找到。

  4. 在生成的key的目录下新建(有就不需要新建了)config文件,没有后缀名,示例如下

    1. Host gitlab
      	HostName xxx.com
      	IdentityFile ~/.ssh/id_rsa_gitlab
      Host github
      	HostName github.com
      	IdentityFile ~/.ssh/id_rsa_github
    2. xxx.com是gitlab中你公司的地址,不是gitlab.com
      Host gitlab中的gitlab是别名,对应xxx.com
      IdentityFile ~/.ssh/id_rsa_gitlab xxx.com对应的ssh key文件名,没有.pub后缀
  5. 测试连接是否成功

    1. ssh -T git@gitlab
      Welcome to GitLab, xxx
    2. ssh -T git@github
      hi xxx You've successfully authenticated, but GitHub does not provide shell access.
  6. 这就写完了。可能你会说搁我俩这扯犊子呢,那它到底怎么分辨谁是谁的!确实还少了一步,刚开始始我也很迷惑,后来也算搞明白了,还有一步需要设置一下,那就是单独设置项目下的user.name和user.email(还记得刚开始取消全局吗,这就是要用到的地方了)

    1. 你有一个项目叫test

    2. git config user.nam "your name"

    3. git config useremail "A@gmail.com"

    4. 查看config,git config -l,如果只看到一个user.name和user.email那就对了,如果有俩说明你的全局还在呢,取消掉取消掉取消掉

  7. 总结一下吧,代码到底怎么找到的家。(公司--git,冰箱--github/gitlab)

    1. 公司有两个冰箱,一个放吃的,另一个也放吃的。

    2. 先把冰箱和key对应(找到公司的其中一个冰箱)

    3. 项目单独设置对应的user.name和user.email(打开冰箱)

    4. 关上冰箱门(这步没有!!!)

重要提醒

windows用户在添加了ssh-add id_xxx之后重启命令行,添加到系统的钥匙串id_xxx会消失,所以如果你关闭后重启命令行

请再次执行 2.6 步骤,我暂时没找到解决办法,如有大神知道,请告知一二,谢谢


转载于:https://my.oschina.net/u/2519530/blog/539450

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值