本地GIT的配置,能都同步到github与gitlab:
1.1 GITLAB的远程库名标识改名
因为本地GIT已经与GITLAB连接了,需要再配置下GIT与GITHUB的连接。
1.2本地库同步到GITHUB上,并将关联名改为GITHUB
首先GITHUB上建立一个learngitlab仓库。
git remote add github https://github.com/huamixu/learngitlab.git
然后git push github master
管理GIT生成的多个ssh key,对应多个远程库
问题背景
通常情况下,git仓库如github都是通过使用SSH协议与客户端连接,就是说使用ssh-keygen生成一个密钥对,将公钥id_rsa.pub放到仓库的项目里,每次连接时SSH客户端发送本地私钥(默认~/.ssh/id_rsa)到服务端验证。验证通过后,本地仓库就可以与服务器进行数据交换了。
但是在实际工作中,一般公司都会搭建私有的git仓库(gitlab.xxx.com),于是就会存在这样的情况,在github有你私人的账号,比如我的是liuchunming033,而公司的gitlab中有我的工作账号liuchunming。
在同一台电脑上,我们不能指望通过ssh-keygen生成的一对密钥对,既能访问github又能访问公司私有的gitlab。这两者你的邮箱如果不同的话,就会涉及到一个问题,生成第二个git的key的时候会覆盖第一个的key,导致必然有一个用不了。
问题解决思路
我们可以在C:\Users\用户名\.ssh 下新建一个config文件配置一下,就可以解决问题。
解决办法
步骤1
如果之前有设置全局用户名和邮箱的话,需要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的仓库在执行刚刚的命令一遍即可。
这样就可以在不同的仓库以不同的账号登录。
步骤2
必须对每个账号分别生成独立的公钥密钥对。在链接到github时,使用账户liuchunming033的公钥密钥对,链接到公司搭建的gitlab时,使用账户liuchunming的公钥密钥对。
首先,进入~/.ssh目录下cd ~/.ssh
生成用于访问github的密钥对id_rsa,id_rsa.pub。
ssh-keygen -t -rsa -C 'liuchunming033@163.com'
再生成用于访问公司搭建的gitlab的密钥对id_rsa_xxx,id_rsa_xxx.pub。
ssh-keygen -t rsa -C 'liuchunming@xxx.com' -f id_rsa_xxx
将生成id_rsa.pub添加到的github的账号Settings中, 将生成的id_rsa_xxx.pub添加到的gitlab的账号Settings中。
然后在~/.ssh 目录下创建config文件,该文件用于配置私钥对应的服务器。内容如下:
Host gitlab ##可以随意命名,链接时使用这个名字
HostName git.iec.io
User xxx@xxx.com
Port 6060
IdentityFile ~/.ssh/id_rsa_inspurgitlab
Host github.com
HostName github.com
User bcccc@bcccc.com
Port 80
IdentityFile ~/.ssh/id_rsa
至此,大功告成。
当链接到gitlab.xxx.com上的仓库时,会使用id_ras_xxx验证远端的公钥是否匹配。而链接到github.com上的仓库时,则使用id_ras验证远端的公钥是否匹配。