当前位置: 首页 > news >正文

[转载]同一台电脑同时使用GitHub和GitLab

原文地址:https://developer.aliyun.com/article/893801

简介: 工作中我们有时可能会在同一台电脑上使用多个git账号,例如:公司的gitLab账号,个人的gitHub账号。怎样才能在使用gitlab与github时,切换成对应的账号,并且免密?这时我们需要使用ssh(git可以选择使用https方式、ssh方式两种方式通信,但使用https方式时,每次fetch和push代码都需要输入账号和密码),以windows为例,进行如下操作。

一,生成ssh密钥并配置

分别对gitlab和github生成对应的密钥(默认情况下本地生成的秘钥位于C:/Users/用户名/.ssh/)

1,生成gitlab密钥并配置

1.1 电脑开始菜单中找到已安装的gitbash并打开,输入命令:
ssh-keygen -t rsa -C "公司邮箱地址"

按回车,再按3次enter键,生成对应的gitlab密钥:id_rsa和id_rsa.pub
在这里插入图片描述

1.2 将gitlab公钥即id_rsa.pub(Windows下路径为C:/Users/用户名/.ssh/)中的内容配置到公司的gitlab上。

操作步骤如下图。用记事本打开id_rsa.pub,复制有所内容,粘贴到4里;5中标题可任意输入。
在这里插入图片描述

2,生成github密钥并配置

2.1 在gitbash中输入命令:

ssh-keygen -t rsa -C "github邮箱地址" -f ~/.ssh/github_rsa

2.2 生成对应的github密钥:github_rsa和github_rsa.pub

在这里插入图片描述

2.3 将github公钥即github_rsa.pub中的内容配置到自己的github上。操作步骤如下:

在这里插入图片描述

2.4 打开github_rsa.pub,复制有所内容,填入后点击“Add SSH key”按钮。接着可能会跳转页面需要输入你的GitHub密码,输入确定即可。

在这里插入图片描述

3,配置git,访问不同host时使用不同的密钥

  • 进入密钥生成的位置(C:/Users/用户名/.ssh/),手动创建一个config文件(注意这个config文件要无后缀)。
  • 在新建的config文件里面配置如下内容:
# 自己的github账号配置
Host github.comport 22User gitHostName github.comPreferredAuthentications publickeyIdentityFile C:\Users\xiaoqq\.ssh\github_rsa
# 公司的gitlab账号配置(HostName为公司的gitlab地址)
Host gitlab.comport 22User gitHostName gitlab.xxx.comUser gitPreferredAuthentications publickeyIdentityFile C:\Users\xiaoqq\.ssh\id_rsa

字段配置简单说明:

HostHost可以看作是一个你要识别的模式,对识别的模式,配置对应的主机名和ssh文件
Port自定义的端口。默认为22,可不配置
User自定义的用户名,默认为git,可不配置
HostName真正连接的服务器地址
PreferredAuthentications指定优先使用哪种方式验证,支持密码和秘钥验证方式
IdentityFile指定本次连接使用的密钥文件

设置HostName时需要注意,复制公司gitlab或者自己的github地址时,需要把"https://"去掉,只保留github.com部分。

二,验证是否设置成功

在C:/Users/用户名/.ssh中,右键打开Git Bash Here,分别输入命令:

# 测试github
ssh -T git@github.com
# 测试gitlab(@符后面的为公司gitlab地址) 如果需要指定端口号 -p 具体端口号名
ssh -T git@gitlab.xxx.com 

如下图所示则说明配置成功
在这里插入图片描述

三,git仓库配置

1,简介

在git中,我们使用git config 命令用来配置git的配置文件,git配置级别主要有以下3类:

  • 仓库级别 local 【优先级最高】
  • 用户级别 global【优先级次之】
  • 系统级别 system【优先级最低】
1.1 git 仓库级别对应的配置文件是当前仓库下的.git/config 【在当前目录下.git目录默认是隐藏的,所以在文件管理器中我们要打开显示以藏文件】

在这里插入图片描述

1.2 git 用户级别对应的配置文件是用户宿主目录下的~/.gitconfig 【宿主目录:C:\Users\xiaoqq】
  • 在这里插入图片描述
1.3 git系统级别对应的配置文件是git安装目录下的 /etc/gitconfig

简单了解后我们就可以进行配置了

2,配置

用户级别配置

用户级别是配置公司gitlba账号还是自己github账号,可以自由选择。因为平常使用公司的代码频率较高,所以我选择将gitlab账号配置成用户级别。gitBath下执行如下命令:

git config --global user.name 'lfr' #公司账号名称
git config --global user.email 'lfr@company.com' #公司账号邮箱
仓库级别配置

local(仓库级别)配置成github的账号。选择一个文件夹作为github的本地仓库,在该文件夹里鼠标右键打开Git Bash Here,执行命令:git init
再执行命令:

git config --local user.name 'username' #github账号名称
git config --local user.email 'username@gmail.com' #github账号邮箱

之后自己的github的代码都应该在这个仓库下进行pull、push操作。

3,克隆项目代码

克隆自己github的项目代码至本地仓库。在2.2中的本地仓库打开gitBash,输入命令:

git clone git@github.com:CarlLfr/pythonScript.git # github项目地址(clone with ssh)

这样就可以对克隆的项目进行git其他的操作了。
至此,我们就可以在这台电脑上同时使用github与gitlab进行代码的设置就完成了。

参考

  • https://www.jianshu.com/p/a34e90b5ce2a
  • https://blog.csdn.net/weixin_43161811/article/details/88804030

相关文章:

  • C++:vector基础讲解
  • 【ARMv8/v9 异常模型入门及渐进 10 -- WFI 与 WFE 使用详细介绍 1】
  • linux网卡MAC地址
  • 浅谈,Java当中普通类与抽象类的区别
  • Day47 打家劫舍123
  • 【MySQL精通之路】全文搜索(3)-带查询扩展的全文搜索
  • .DFS.
  • Docker安装MySQL的详细教程
  • 机器学习笔记——K近邻算法、手写数字识别
  • 【网络协议】【OSI】一次HTTP请求OSI工作过程详细解析
  • vue详解(4)
  • Android Gradle文件 一次通关
  • 全能集成开发平台Team·IDE
  • MySQL的SQL语句
  • SUPRA:无须额外训练,将Transformer变为高效RNN,推理速度倍增
  • 4月23日世界读书日 网络营销论坛推荐《正在爆发的营销革命》
  • C# 免费离线人脸识别 2.0 Demo
  • express.js的介绍及使用
  • JavaScript服务器推送技术之 WebSocket
  • JS函数式编程 数组部分风格 ES6版
  • mysql中InnoDB引擎中页的概念
  • SpingCloudBus整合RabbitMQ
  • Spring-boot 启动时碰到的错误
  • webpack+react项目初体验——记录我的webpack环境配置
  • 阿里云ubuntu14.04 Nginx反向代理Nodejs
  • 程序员该如何有效的找工作?
  • 翻译 | 老司机带你秒懂内存管理 - 第一部(共三部)
  • 前端每日实战:70# 视频演示如何用纯 CSS 创作一只徘徊的果冻怪兽
  • 区块链技术特点之去中心化特性
  • 实习面试笔记
  • 数据仓库的几种建模方法
  • 听说你叫Java(二)–Servlet请求
  • 译米田引理
  • 用 vue 组件自定义 v-model, 实现一个 Tab 组件。
  • 微龛半导体获数千万Pre-A轮融资,投资方为国中创投 ...
  • ​html.parser --- 简单的 HTML 和 XHTML 解析器​
  • ​Linux Ubuntu环境下使用docker构建spark运行环境(超级详细)
  • ​你们这样子,耽误我的工作进度怎么办?
  • # 数据结构
  • #HarmonyOS:基础语法
  • #pragma once与条件编译
  • $(function(){})与(function($){....})(jQuery)的区别
  • (1/2)敏捷实践指南 Agile Practice Guide ([美] Project Management institute 著)
  • (3)医疗图像处理:MRI磁共振成像-快速采集--(杨正汉)
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (env: Windows,mp,1.06.2308310; lib: 3.2.4) uniapp微信小程序
  • (STM32笔记)九、RCC时钟树与时钟 第二部分
  • (二)Kafka离线安装 - Zookeeper下载及安装
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (九)信息融合方式简介
  • (求助)用傲游上csdn博客时标签栏和网址栏一直显示袁萌 的头像
  • (全部习题答案)研究生英语读写教程基础级教师用书PDF|| 研究生英语读写教程提高级教师用书PDF
  • (十)DDRC架构组成、效率Efficiency及功能实现
  • (算法)N皇后问题
  • (一)ClickHouse 中的 `MaterializedMySQL` 数据库引擎的使用方法、设置、特性和限制。