当有多个git帐号的时候,好比一个github,用于本身进行一些开发活动,再来一个gitlab,通常是公司内部的git。这二者你的邮箱若是不一样的话,就会涉及到一个问题,生成第二个git的key的时候会覆盖第一个的key,致使必然有一个用不了。 javascript
咱们能够在~/.ssh目录下新建一个config文件配置一下,就能够解决问题 php
ssh-keygen -t rsa -C "yourmail@gmail.com"
这里不要一路回传,让你选择在哪里选择存放key的时候写个名字,好比 id_rsa_github,以后的两个能够回车。
完成以后咱们能够看到~/.ssh目录下多了两个文件 java
生成第二个ssh key(这里我用于gitlab,用的是公司邮箱) git
ssh-keygen -t rsa -C "yourmail@gmail.com"
仍是同样不要一路回车,在第一个对话的时候继续写个名字,好比 id_rsa_gitlab,以后的两个能够回车。
完成以后咱们能够看到如2中图所标记,同样出现两个文件。(一个公钥一个私钥) github
打开ssh-agent
这里若是你用的github官方的bash,ssh-agent -s,若是是其余的,好比msysgit,eval $(ssh-agent -s) windows
添加私钥 bash
ssh-add ~/.ssh/id_rsa_github ssh-add ~/.ssh/id_rsa_gitlab
建立并修改config文件 ssh
在windows下新建一个txt文本,而后将名字后缀一块儿改为config便可
在bash下的话直接touch config便可。
添加一下内容 gitlab
# gitlab Host git.iboxpay.com HostName git.iboxpay.com //这里填大家公司的git网址便可 PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_gitlab User zhangjun # github Host github.com HostName github.com PreferredAuthentications publickey IdentityFile ~/.ssh/id_rsa_github User ZJsnowman
在github和gitlab上添加公钥便可,这里再也不多说。 测试
测试
PS:若是到这里你没有成功的话,别急,教你解决问题的终极办法--debug
好比测试github,ssh -vT git@github.com
-v 是输出编译信息,而后根据编译信息本身去解决问题吧。就我本身来讲通常是config里的host那块写错了。
若是以前有设置全局用户名和邮箱的话,须要unset一下
git config --global --unset user.name git config --global --unset user.email
而后在不一样的仓库下设置局部的用户名和邮箱
好比在公司的repository下git config user.name "yourname" git config user.email "youremail"在本身的github的仓库在执行刚刚的命令一遍便可。
这样就能够在不一样的仓库,已不一样的帐号登陆。
http://www.jianshu.com/p/f7f4142a1556