在开发上我们经常遇到,需要跟别人共享代码,特别是跟有些客户联合开发的情况下,有很多个客户。有些git仓库是客户建立的,比如有两个客户A和分布建了gitA和gitB两个代码仓库。我们在支持这两个客户的时候可能是同一个工程师,那这个工程师怎么访问这两个git代码仓库呢?
我们都比较熟悉的下载代码使用git clone通过ssh下载git仓库代码;要下载这个仓库的代码,我们就需要把我们电脑上的ssh公钥的key配置到这个仓库权限里面去;通过gitA的公钥管理添加公钥即可;但是如果有两个工程呢?实践证明不能使用同一个公钥,提示公钥被他人占用了,那怎么办呢?
可以这样:再生成一个公钥,通过ssh-keygen来;
ssh-keygen -t rsa -C "youremail"
回车,保存key的文件名称需要跟以前的不一样,不然就覆盖掉了,比如输入id_rsa_key2;
有了id_rsa_key2.pub,我们把它的内容粘贴到gitB的公钥管理里面去添加上,这样添加了在git仓库端的配置就算完成了。
迫不及待的试试同步代码,发现后面添加的gitB同步不了代码,被拒绝了?gitA这个时候是可以正常同步的;
那怎么办?
需要配置ssh的config,把几个公钥都配置进去:
# Default GitHub gitA
Host gitee.com
HostName gitee.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa1# id_rsa_key2 gitB
Host tsgitee.com
HostName gitee.com
User git
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa_key2
我们可以发现其实gitA,gitB的HostName都是一样的,同一个平台的,gitee.com的。user都是git,证书存放的位置就各有一些不一样了,根据实际密钥名称来填写。
/*****************************************************************************************************/
声明:本博内容均由http://blog.csdn.net/edsam49原创,转载请注明出处,谢谢!
/*****************************************************************************************************/
注意,我们发现Host是不大一样的,因为gitA和gitB的HostName是一样的,没法区别了,只有通过一个Host的别名来区分一下该使用哪对密钥。那么gitB的下载地址本身是:git@gitee.com:ds/gitB.git,你发现通过这个地址没法下载,就算以前下载了也sync不来代码;
那得使用上Host的别名啊!地址变更一下:git@tsgitee.com:ds/gitB.git,这样子一改变,发现下载代码好使了,
这样看git remote信息
这样下来,就可以同时支持下载到两个工程的代码了。