写在前面:本文主要记录一些本人遇到的头疼的问题,对于同一个git拉取不同平台项目的文章网络上已经很成熟,可自行搜索参考。
单平台与多平台的区别
对于单平台而言,只需要按照一般的步骤,生成密钥,并且将公钥
与平台绑定。
对于多平台而言,需要给每个平台都生成密钥,并且上传(绑定)到对应的平台,并且需要通过config文件来联系这些密钥文件,具体步骤如下:
注意:
之前有过git使用记录的,需要删除之前的一些配置(无需担心会影响拉取下来的项目,并不会影响~~。个人认为貌似不删除也可以,具体没试过,具体的一些删除可以搜索)
1、任意位置(最好新建文件夹),右键,git bash,生成密钥
ssh-keygen -t rsa -C "xxx@xxx.com" (这里的xxx@xxx.com是你的账号邮箱)
注意:
这个时候不要急着回车,因为需要给文件命名
对于不同的平台给出不同的命名
随后会生成如下文件:
其中.pub就是生成的公钥,需要上传到对应平台的ssh(自行搜索)。
2、将这些文件copy到用户的.ssh文件下
3、在.ssh文件夹下创建config.txt文件,加入如下内容后修改后缀名(删除后缀名,即config.txt → config)
# gitlab
Host gitlab //别名!!!很重要,我下面要着重说!!!
HostName gitlab.com //平台的域名(ip也可以,公司内部的域名应该不一样)
IdentityFile ~/.ssh/id_rsa_gitlab //映射到密钥文件
User xxx //没啥作用
# github
Host github
HostName github.com
IdentityFile ~/.ssh/id_rsa_github
User xxx
注意:
xdm,他娘的,我在这边栽了大坑。网上基本没人说这个点。
我们的目的:一个用户(主机)的git可以clone、push不同平台的项目。在公司的时候基本都是用的gitlab,但是摸…自我学习提升的时候,我们需要clone一下github或者gitee上面的项目来看看。如下图:
我就拿我最常用的ssh来举例(我写文章的时候,github上不去了,我就直接截取的gitlab的界面)
图中红色方框中的内容,是平台的域名(上面是我公司的域名)它关联到了上面配置的config文件中的Host别名
,没错就是我上面说我要着重讲的那个配置属性,所以当你配置了其他的名称的时候,拉取项目就会出错!!!因为origin匹配不上了,会出现如下链接的问题:
fatal问题
所以我就按照上面的提示进行eval以及ssh-add,虽然紧接着进行clone也是可以的,但是idea无法拉取提交项目。我也以为是初始化的问题,因为每次使用git都要进行上面的操作,所以我还写了.bashrc文件,终究解决不了问题。
所以这边强烈建议:config中的Host和Host Name保持一致!!!!
写到这边突然也没那么气了,他娘的浪费了我俩小时,哈哈,所以后面我就不写了,反正网上都有,我主要记录一下自己的问题,希望能够帮助到遇到同样问题的小伙伴。
over~