GitHub和GitLab使用配置

本来一直使用github管理项目,后来公司搭建了gitlab环境,要求使用gitlab管理项目。在使用时,就与github有冲突。百度了一下,有2个解决方案:

1.使用同一个邮箱,生成的 public key 也会是同一个(感觉有点不现实,至少我的邮箱是不同的,也懒的改)

2.基于config文件(原理上就是对 SSH 协议配置 config 文件,对不同的域名采用不同的认证密钥。)

配置流程:

a.   生成私钥

 ssh-keygen -t rsa -C "[email protected]"    //可以直接回车,默认情况是在ssh目录下,生成id_rsa、id_rsa.pub

ssh-keygen -t rsa -C "[email protected]"      

Generating public/private rsa key pair.

Enter file in which to save the key (/Users/xx/.ssh/id_rsa): /Users/xx/.ssh/id_rsa_github

这个时候手动输入路径和文件名/Users/xx/.ssh/id_rsa_github,之后2次输入电脑密码。会在ssh目录下生成id_rsa_github、id_rsa_github.pub两个文件/。

查看一下:

cd ~/.ssh

ls

这个时候会发现有id_rsa、id_rsa.pub、id_rsa_github、id_rsa_github.pub四个文件。

将id_rsa.pub和id_rsa_github.pub分别打开,设置到github和gitlab的sshkey一项。

cat id_rsa.pub     //可以直接打开,或者用sublime打开都行



b.编写config文件,告诉本地git到不同的国家带不同的钥匙

cd ~/.ssh

vim config

配置config(具体内容根据自己需求来定)

#gitlab

Host gitlab

User xx

        HostName gitlab.*.com

        IdentityFile ~/.ssh/id_rsa

#github

Host github

User xxxxx

        HostName github.com

        IdentityFile ~/.ssh/id_rsa_github



c.配置仓库

#gitlab 

cd     ~/workspace/gitlab

git init

git config --global user.name 'xx'

git config --global user.email '[email protected]


#github

cd     ~/workspace/githubgit init

git config --local user.name 'xxxx'

git config --local user.email '[email protected]'

注意在使用git config --local user.name 'xxxx'配置时,一定要到仓库目录下,配置完成后,可以查看一下,用户名和邮箱是否添加上去。

cat ~/.gitconfig | head -3

也可以使用git config --list查看所有的用户名和邮箱


d.最后一步

之前几步我都是在网上查看的,但是发觉按照要求做后,当使用gitlab时没有问题,但是使用GitHub克隆项目的时候还是会报错:[email protected]: Permission denied (publickey), Host key verification failed。(gitlab 邮箱是设置的global的,github邮箱是设置local的)

在折腾了很久后,误打误撞添加了一下id_rsa_github之后就可以了。

ssh-add ~/.ssh/id_rsa_github

再次clone代码时,会有个警告。

The authenticity of host 'x x x x' can't be established.

ECDSA key fingerprint is SHA256:JUKzm0IYhwDal2m/OftPz3tRoAfaXCTzYKZas5wTx1I.

Are you sure you want to continue connecting (yes/no)? yes

输入yes就好了。

你可能感兴趣的:(GitHub和GitLab使用配置)