公司最近开始使用Git来进行版本控制,在配置好Gitlab之后写了几天代码,来提交本地Github项目时,发现提交不上去.才发现Github与Gitlan不配置config时无法 同时提交的. 以此记录一下学习过程
生成ssh key文件
在绑定本地项目上传到github上时,需要创建一个Key文件,然后在github上进行绑定,这里就不在重复描述. 需要查看的可以看我之前写的博客绑定Github
在同时要绑定github 与gitlab时我们的ssh key 需要自己定义一个名字 ,否则只会重复创建默认名字为id_rsa 的文件. 就无法绑定两个网站了.
首先通过命令创建SSH文件
ssh-keygen -t rsa -C "gitlab邮箱"
ssh-keygen -t rsa -C "github邮箱"
Enter file in which to save the key (/c/Users/ZL-arccode/.ssh/id_rsa): github_id_rsa 和gitlab_id_rsa
在确认文件名时分别命名github_id_rsa和gitlab_id_rsa, 用来分别绑定github与gitlab
添加密钥列表
ssh-agent bash
在生成完SSH文件之后 我们需要添加密钥进密钥列表,添加完成后可以通过
git-add -l
查看加入的密钥列表
ssh -v git@github.com
查看github调试信息
ssh -v git@gitlab.com
查看gitlan调试信息
这里的github.com和gitlab.com 都是指的config 的HostName(下文有说到)
当我们生成好SSH文件之后,把.pub结尾的文件 复制到我们github和gitlan的ssh记录里面 通过
$ ssh -T git@github
和 $ ssh -T git@gitlab
进行测试
正确结果如下
Github
Hi tony-xxw! You've successfully authenticated, but GitHub does not provide shell access.
Gitlab
Welcome to GitLab, @cb.xiang!
配置config文件
我们SSH文件一般会生成在C/User/.ssh/下(Window环境) 我们需要在这个目录下 配置一个config文件,来告诉git 我们的SSH 分别指向github和gitlanb
文件内容如下
#gitlan
Host gitlab HostName gitlan.com IdentityFile ~/.ssh/gitlab_id_rsa
#github
Host github HostName github.com IdentityFile ~/.ssh/github_id_rsa
- host: 指我们需要绑定的网站
- hostName: 这里指向github与gitlanb的域名, 例如github的域名为(github.com)
- IdentityFile : 对应的ssh Id文件
配置全局用户名###
最后 我们只需要配置好本地的全局账号就算配置成功了
git config --global user.name 'xxx'
git config --global user.email 'x@xxx'
学习中,遇到的问题
- git在设置全局账号时 是互相覆盖的
- git配置github时 如果全局账号 邮箱不是github的注册邮箱,提交后无法涂满小绿哥
- 在配置完config文件以后 git clone 项目 需要使用占位符
网友评论