本文写的针对Git有必定的基础的使用者。初学的话能够参考这个系列教程,还有git - 简明指南html
首先说一下背景java
两个邮箱 A@gmail.com/B@gmail.com,git
我有两个git帐号,一个公司(github)A@gmail.com/,一个本身的(gitlab)B@gmail.comgithub
目标:提交公司任务到gitlab上,本身写的代码提交到github上shell
背景结束。windows
在git克隆(clone)是一般有两种方式的连接,git@和https//bash
https方式须要每次都输入帐号和密码ssh
git@方式一次配置之后都不须要输入密码ide
还要说一点,我以为对新手有帮助,就是git和github和gitlab的关系gitlab
git是基础设施,github和gitlab是基础上的建筑物,他俩的方式都是同样的。
就是说只要是你用git配置一下,而后能够直接对github和gitlab进行操做。
咱们要作的目标只有一个,让咱们在以SSH方式提交的时候邮箱和github或者gitlab对应上。下面开始正题。
生成两个ssh key
把key添加到对应的网站设置里
新增并设置config
测试是否链接成功
对目标项目设置user.name和user.email
检查是否设置了全局user.name、user.email,用如下命令取消
git config --global --unset user.name
git config --global --unset user.email
为何要取消呢,由于咱们要把config调到项目级别,提交时识别的是邮箱,你设置了全局,怎么提交都是用的全局设置啊(由于它判断的依据是邮箱)
生成ssh key
生成key命令
ssh-keygen -t rsa -C "your_email"
会提示你输入文件名,你能够输入对应的网址的名称好比,id_rsa_github,表示此key是对应的github网址
提示你输入密码,直接enter,确认密码,直接enter,这样不输入密码其实比较方便
这样呢,你在b步骤中输入文件名是的路径就会出现你命名的key,有两个密钥,好比:id_rsa_github,id_rsa_github.pub
重复以上步骤生成id_rsa_gitlab的key
若是出现Could not open a connection to your authentication agent的错误,就试着先用如下命令:
ssh-agent bash
ssh-add id_rsa_xxx
把上面获得的.pub结尾的key加到对应的网站设置里,在github和gitlab里加ssh key我想大家必定能找到。
在生成的key的目录下新建(有就不须要新建了)config文件,没有后缀名,示例以下
Host gitlab HostName xxx.com IdentityFile ~/.ssh/id_rsa_gitlab Host github HostName github.com IdentityFile ~/.ssh/id_rsa_github
xxx.com是gitlab中你公司的地址,不是gitlab.com Host gitlab中的gitlab是别名,对应xxx.com IdentityFile ~/.ssh/id_rsa_gitlab xxx.com对应的ssh key文件名,没有.pub后缀
测试链接是否成功
ssh -T git@gitlab Welcome to GitLab, xxx
ssh -T git@github hi xxx You've successfully authenticated, but GitHub does not provide shell access.
这就写完了。可能你会说搁我俩这扯犊子呢,那它到底怎么分辨谁是谁的!确实还少了一步,刚开始始我也很迷惑,后来也算搞明白了,还有一步须要设置一下,那就是单独设置项目下的user.name和user.email(还记得刚开始取消全局吗,这就是要用到的地方了)
你有一个项目叫test
git config user.nam "your name"
git config useremail "A@gmail.com"
查看config,git config -l,若是只看到一个user.name和user.email那就对了,若是有俩说明你的全局还在呢,取消掉取消掉取消掉
总结一下吧,代码到底怎么找到的家。(公司--git,冰箱--github/gitlab)
公司有两个冰箱,一个放吃的,另外一个也放吃的。
先把冰箱和key对应(找到公司的其中一个冰箱)
项目单独设置对应的user.name和user.email(打开冰箱)
关上冰箱门(这步没有!!!)
重要提醒
windows用户在添加了ssh-add id_xxx以后重启命令行,添加到系统的钥匙串id_xxx会消失,因此若是你关闭后重启命令行
请再次执行 2.6 步骤,我暂时没找到解决办法,若有大神知道,请告知一二,谢谢