开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情
前言
为了解决一台电脑同时使用githb、gitlab及gitee,例如:使用公司的gitlab账号、个人的github账号等。这时候需要通过使用ssh。
1.清除git全局设置(新安装git,可忽略)
由于这台电脑设置了git全局设置(之前装过git),如何查看对git设置全局的user.name和user.email。可以通过git命令面板,例如下:
git config --global --list //查询设置全局信息
可以看到这两个名称及邮箱,这时候需要去清除git全局设置,避免对后面造成会未知报错信息。
必须要删除名称及邮箱,例如下:
git config --global --unset user.name //删除名称
git config --global --unset user.email //删除邮箱
2.各种生成新SSH密钥
指定文件路径,一般默认路径为C:/User/用户/.ssh/
2.1github的密钥
ssh-keygen -t rsa -f ~/.ssh/id_rsa.github -C "你的邮箱"
注意:直接回车3下,什么也不要输入,就是默认没有密码。例如下:
这说明成功生成新的SSH Keys了。
2.2 gitlab的密钥
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitlab -C "你的邮箱"
2.3 gitee的密钥
ssh-keygen -t rsa -f ~/.ssh/id_rsa.gitee -C "你的邮箱"
生成三个ssh完成之后,去看看ssh文件夹目录下有没有生成SSH文件:
可以看到这些文件,这说明配置生成SSH成功了。
3.添加识别SSH keys新的密钥
一般默认读取id_rsa,为了让SSH识别新的私钥,把这些私钥需要加入SSH agent中
ssh-agent bash
ssh-add ~/.ssh/id_rsa.github
ssh-add ~/.ssh/id_rsa.gitlab
ssh-add ~/.ssh/id_rsa.gitee
4.由于有多个账号必须配置config文件(重点)
因为后面需要访问不同的网址host也访问不同的密钥,所以必须要配置config文件。
如果没有config文件,则需要创建config文件
touch ~/.ssh/config
接着,config需要填的内容,注意:千万不要加后辍名,要有空的,如下:
配置内容:
#github
Host github.com
HostName github.com
Port 22
User git
IdentityFile ~/.ssh/id_rsa.github
#gitlab 公司的gitlab账号配置(HostName为公司的gitlab地址)
Host gitlab.com
HostName 192.168.41.203
Port 22
User git
IdentityFile ~/.ssh/id_rsa.gitlab
#gitee
Host gitee.com
HostName gitee.com
Port 22
User git
IdentityFile ~/.ssh/id_rsa.gitee
配置config文件说明 Host
Host可以看作是一个你要识别的模式,对识别的模式,配置对应的主机名和ssh文件
Port
自定义的端口。默认为22,可不配置
User
自定义的用户名,默认为git,可不配置
HostName
真正连接的服务器地址, 公司可能为仅数字IP ,如192.168.41.203
PreferredAuthentications
指定优先使用哪种方式验证,支持密码和秘钥验证方式
IdentityFile
指定本次连接使用的密钥文件
5.在github、gitlab及gitee网址添加SSH Keys
5.1github
Title: 就是ssh keys的名称,填自己喜欢的名称即可。
Key: 将文件拷贝的~/.ssh/id_rsa.github.pub文件所有内容里面复制到key即可,最后在点击”add ssh key“就可以了。
5.2gitlab
Key: 将文件拷贝的~/.ssh/id_rsa.gitlab.pub文件所有内容里面复制到key即可,最后在点击”add key“就可以了。
5.3gitee
公钥: 将文件拷贝的~/.ssh/id_rsa.gitee.pub文件所有内容里面复制到key即可
以上的配置操作已经OK了,接下来最后一步测试操作。
6.测试是否连接成功
ssh -T git@github.com
ssh -T git@gitlab.com
ssh -T git@gitee.com
git测试信息:
Administrator@▒ƽ▒▒▒ MINGW64 ~/Desktop
$ ssh -T git@github.com
The authenticity of host 'github.com (20.205.243.166)' can't be established.
ED25519 key fingerprint is SHA256:+DiY3wvvV6TuJJhbpZisF/zLDA0zPMSvHdkr4UvCOqU.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'github.com' (ED25519) to the list of known hosts.
Hi JamesHjb-Code! You've successfully authenticated, but GitHub does not provide shell access.
Administrator@▒ƽ▒▒▒ MINGW64 ~/Desktop
$ ssh -T git@gitlab.com
Welcome to GitLab, @hjb!
Administrator@▒ƽ▒▒▒ MINGW64 ~/Desktop
$ ssh -T git@gitee.com
The authenticity of host 'gitee.com (180.97.125.228)' can't be established.
ED25519 key fingerprint is SHA256:+ULzij2u99B9eWYFTw1Q4ErYG/aepHLbu96PAUCoV88.
This key is not known by any other names
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added 'gitee.com' (ED25519) to the list of known hosts.
Hi james! You've successfully authenticated, but GITEE.COM does not provide shell access.
以上的就代表成功访问各种的代码仓库网址。红色字体表示是需要填测试访问是否成功,绿色字体表示是说明连接成功。紫色字体表示由于无法确定主机IP,是否继续连接的信息,直接填yes即可。
7.仓库配置
在git中,我们使用git config 命令用来配置git的配置文件,git配置级别主要有以下3类:
仓库级别 local 【优先级最高】
用户级别 global【优先级次之】
系统级别 system【优先级最低】
8.用户级别配置
一般根据看自己代码及提交频率较高,可以选择代码及提交频率较高的仓库(例如:gitlab、github)作为用户级别配置。
git config --global user.name '黄建斌' #公司账号名称 git config --global user.email 'xxxxx@qq.com' #公司账号邮箱
9.仓库级别配置
如果个人开发项目(github)的话可以配置成仓库级别,选择自己个人开发项目文件夹作为github的本地仓库,该这个文件夹里鼠标右键打开Git Bash Here,执行命令如下:
git init
添加到该文件夹目录下.git文件夹。 接着,执行命令:
git config --local user.name 'Jianbin Huang' #github账号名称
git config --local user.email 'xxxxx@qq.com' #github账号邮箱
以上操作完成之后,都应该在这个文件夹仓库可以进行拉取(pull)、推送(push)操作。
9.建立仓库
如果需要从github项目拉取下来,可以使用命令如下:
git clone "项目url" //从github的Clone Url复制到这个
9.1 新建仓库常用命令
git init // 把这个目录作为Git可以管理的仓库
git add . // 这个表示追踪未更新的文件,可以是跟单一文件,也可以跟通配符,更可以跟目录。一个点表示把当前文件夹下所有文件。
git commit -m "提交的情况" // 把文件提交到本地仓库
git push -u origin master // 把本地库的所有内容推送到远程库上
常用命令指令:添加文件 --> 提交文件 --> 推送文件
git add . --> git commit -m "提交情况" --> git push -u origin master
然后在github网站上可以看到各种文件出来了,如下:
另外在输入 git push -u origin master后,遇到报错问题:
例如:本地git仓库或者远程仓库没有关联的问题
这时可以添加关联命令:
git remote add origin "url的git仓库"
然后再次执行命令:
把项目推送到远程仓库。
git push -u origin master
这样搞定了。