快捷搜索: 王者荣耀 脱发

如何在本地环境自由切换Gitee、Github与Gitlab?

1.简介

我们在现实工作之中,会经常出现以下情况,我们自己在github、gitlab、gitee上都有账号的同时,可能有些公司环境也是购买的gitee或github的私有代码托管服务,或者在局域网部署一套gitlab服务并分配账号给公司内的开发人员。于是,就会出现一个开发人员同时存在多个git账号(公司局域网内的gitlab账号、自己或公司分配的github或gitee账号)的情况,我们希望把不同的git代码托管服务账号和提交内容进行隔离,从而实现各个账号各自管理自己的代码,互不干扰!在提交代码的同时,能够实现既可以通过 git命令提交,又可以通过TortoiseGit 工具提交代码到各自的git代码托管服务器上。

那么,在多git账号的情况下,如何在本地电脑上,做到自由切换账号,从而做到不同git服务上代码的隔离呢?下面会详细阐述。

2.方案

通常,我们通过ssh的方式连接到Github/Gitee/GitLab服务,ssh连接需要一对秘钥。因此,如果想在同一台电脑上绑定不同的Github/GitLab/Gitee帐号,需要满足以下条件:

  1. 能够为每个账号生成私钥/公钥对;
  2. 在提交或更新代码时,可以区分不同账户,推送代码到相应的仓库或从相应的仓库拉去代码;

具体方案如下:

  1. 生成私钥/公钥时,密钥文件命名避免重复;
  2. 设置不同Host对应同一HostName,但密钥不同;
  3. 取消 git全局用户名/邮箱设置,为每个仓库独立设置用户名/邮箱;

3.实施

公司局域内的gitlab账号由于经常使用,可设置为全局账号,具体方法不再阐述。本文主要演示如何在公司git

3.1 Git安装

Git for windows与TortoriseGit的安装不是本文重点,不再演示。

3.2 生成SSH key

Git使用的是SSH加密协议,Gitee与Github网站里,用户设置中需要配置相应的SSH keys。通常,需要管理多少个账户,一般就需要生成多少套SSH keys。

在.ssh文件夹下打开Git Bash或CMD窗口,输入下面指令生成第一个SSH key(以gitee环境举例,github环境类似):

公钥可命名为gitee_id_rsa(公钥名需根据环境进行区分),密码为空或者输入,为空直接点击两次回车。

3.3 配置config文件

在.ssh文件目录下创建 config文件,可以通过touch config方式创建,具体添加内容如下代码所示:

# github
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/github_id_rsa
User your-email

# gitee
Host gitee.com
HostName gitee.com
PreferredAuthentications publickey
IdentityFile ~/.ssh/gitee_id_rsa
User your-email

此时用户.ssh目录下,内容如下所示:

3.4 把github与gitee对应的公钥对应的公钥上传到服务器

下面以gitee服务器举例。

首先,查看本地生成的公钥:

然后,打开gitee上的SSH公钥配置页面,将上一步得到的公钥粘贴到指定位置:

将公钥上传到Github服务器与将公钥上传到Gitee服务器类似,不再演示。

3.5 测试

可通过ssh -T git@gitee.com或ssh -T git@github.com命令,测试已建立的本地环境与gitee、github的连通性。

若遇到以下Connection refused问题,不要紧张,是由于公司内部屏蔽了github与gitee引起。

3.6 最后

至此,支持多Git账户的环境已部署完成。

然后,我们为不同的Git账户建立不同的工程目录,在不同的工程目录内,对源代码进行操作即可自动绑定到对应的git账户与仓库。

这篇文章是基于Win10平台上的实践,由于时间有限,可能总结的不是很完整,也可能在其他平台上会会报出问题,如果读者有遇到什么问题,欢迎留言讨论。


如果你喜欢本文,欢迎点击右上角,把文章分享到朋友圈.....

经验分享 程序员 微信小程序 职场和发展