git使用多个代码托管仓库的配置

441 阅读5分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第13天,点击查看活动详情

前言

为了解决一台电脑同时使用githb、gitlab及gitee,例如:使用公司的gitlab账号、个人的github账号等。这时候需要通过使用ssh。

1.清除git全局设置(新安装git,可忽略)

由于这台电脑设置了git全局设置(之前装过git),如何查看对git设置全局的user.name和user.email。可以通过git命令面板,例如下:

git config --global --list //查询设置全局信息

微信截图_20221228171532.png

可以看到这两个名称及邮箱,这时候需要去清除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下,什么也不要输入,就是默认没有密码。例如下:

微信截图_20221228171716.png

这说明成功生成新的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成功了。

微信截图_20221228171852.png

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

微信截图_20221228172131.png

Title: 就是ssh keys的名称,填自己喜欢的名称即可。

Key: 将文件拷贝的~/.ssh/id_rsa.github.pub文件所有内容里面复制到key即可,最后在点击”add ssh key“就可以了。

5.2gitlab

微信截图_20221228172204.png

Key: 将文件拷贝的~/.ssh/id_rsa.gitlab.pub文件所有内容里面复制到key即可,最后在点击”add key“就可以了。

5.3gitee

微信截图_20221228172255.png 公钥: 将文件拷贝的~/.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复制到这个

微信截图_20221228172659.png

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网站上可以看到各种文件出来了,如下:

微信截图_20221228172748.png

另外在输入 git push -u origin master后,遇到报错问题:

例如:本地git仓库或者远程仓库没有关联的问题

这时可以添加关联命令:

git remote add origin "url的git仓库"

然后再次执行命令:

把项目推送到远程仓库。

git push -u origin master

这样搞定了。