最近一个问题,公司原来有git仓库,后来又新建了一个git仓库,需要把原来的git仓库上的代码迁移到新的git的仓库,但是由于有部分项目还是需要在老的git仓库,所以就会存在同时有两个git仓库的情况,这个时候我们需要多个ssh并存,怎么操作了,来看下面例子:
新创建一个public key
假设之前电脑上已经配置过了一次git ssh(在~/.ssh目录下),通过下边命令创建一个新的key。
$ ssh-keygen -t rsa -C “your_email@youremail.com”
注意在输入命令敲回车后会提示让你指定文件名,这时候我们不要用默认的,否则会覆盖现在已有的密钥文件。我们指定一个新的文件名,我这里是id_rsa_githhub
Enter file in which to save the key (/c/Users/lismo/.ssh/id_rsa): /c/Users/lismo/.ssh/id_rsa_github
这时候检查~/.ssh目录,应该至少有四个文件,分别是:
- id_rsa
- id_rsa.pub
- id_rsa_github
- id_rsa_github.pub
把新生成的key关联到github
在github上把新生成的SSH key添加进去,这步同之前添加SSH key的操作一样。进入github->Your Profile,左侧点击SSH and GPS keys,然后点击New SSH key。
添加到SSH认证代理
在本地通过下边的命令
$ ssh-add ~/.ssh/id_rsa_github
有的可能会有报错,提示“Could not open a connection to your authentication agent.”,这是因为你没有开SSH认证代理造成的,先执行如下命令,然后再添加
eval $(ssh-agent)
成功了会有如下提示
Identity added: /c/Users/lismo/.ssh/id_rsa_github (your_email@youremail.com)
创建config文件
我们需要告诉git每个key都在什么情况下需要用到。在~/.ssh/目录下创建config文件,也可以通过下边命令创建
$ touch ~/.ssh/config 打开config文件,写入如下内容
#gitlab
Host gitlab.com
HostName gitlab.com
User git
IdentityFile ~/.ssh/id_rsa
#github
Host github.com
HostName github.com
User git
IdentityFile ~/.ssh/id_rsa_github
测试
现在可以通过git clone从新配置的github上克隆下代码试试看配置是否成功。
或者指向远程新的地址:
git remote set-url origin 新的远程地址 git remote -v 查看当前新的远程地址
参考链接:https://blog.csdn.net/LIsmooth/article/details/108141989