平时在公司都是使用的gitlab,今天想要再配置一个GitHub仓库,遂有此文,纯粹按自己理解记录一下,有不对的地方请指正
不同平台对应不一样的密钥,所以首先肯定要再在电脑生成一个新的对应github账号的密钥,然后添加到github账户上
C:\Users\admin.ssh 下有现有的密钥id_rsa——>对应gitlab,现在要再生成一对密钥来对应github
(命令1:生成默认密钥)
$ ssh-keygen -t rsa -C "gitlab地址"
(命令2:生成 对应github的密钥)
$ ssh-keygen -t rsa -C "github地址" -f ~/.ssh/github_rsa
执行命令2,就会生成2个文件如图
将github_rsa.pub 里的密钥添加到GitHub账号即可
在C:\Users\admin.ssh中新建文件config,配置如下:
# github key
Host github
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_rsa
Host gitlab
HostName gitlab.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
下面对上述配置文件中使用到的配置字段信息进行简单解释:
(参考自https://blog.csdn.net/u014296452/article/details/79984867)
Host
它涵盖了下面一个段的配置,我们可以通过他来替代将要连接的服务器地址。
这里可以使用任意字段或通配符。
当ssh的时候如果服务器地址能匹配上这里Host指定的值,则Host下面指定的HostName将被作为最终的服务器地址使用,并且将使用该Host字段下面配置的所有自定义配置来覆盖默认的/etc/ssh/ssh_config配置信息。
Port
自定义的端口。默认为22,可不配置
User
自定义的用户名,默认为git,可不配置
HostName
真正连接的服务器地址
PreferredAuthentications
指定优先使用哪种方式验证,支持密码和秘钥验证方式
IdentityFile
指定本次连接使用的密钥文件
$ ssh -T git@gitlab
Welcome to GitLab, 某某某!
$ ssh -T [email protected]
Hi 某某某! You've successfully authenticated, but GitHub does not provide shell access.
以上测试成功
git有2种变量,一种是全局的(global),一种是在具体本地仓库下才生效的(local)
因为我公司项目用的是gitlab,所以将gitlab设置为global
我之前配置过global变量的,这里再记录一下命令
1.配置global全局变量
在任何目录下配置global全局变量
$ git config --global user.name "用户名"
$ git config --global user.email "邮箱”
直接查看自己配置过的全局变量
$ git config --global user.name
$ git config --global user.emai
2.配置local局部变量
在指定仓库的目录下配置 local变量,比如我有个项目 aaa,进入aaa,在里面执行一下命令
$ git config --local user.name "用户名"
$ git config --local user.email "邮箱”
直接查看自己配置过的 local变量
$ git config --local user.name
$ git config --local user.emai
以上,就可以愉快的clone开发了
还遇到个小问题:
创建仓库后,git pull/push 报错,报错信息如下
Your configuration specifies to merge with the ref ‘refs/heads/master’ from the remote, but no such ref was fetched.
这是正常的,只要add,commit 后 push 就没错了
参考:https://www.jianshu.com/p/a34e90b5ce2a