GitLab教程(一):安装Git、配置SSH公钥

文章目录

  • 一、Git安装与基本配置(Windows)
    • 下载
    • 卸载
    • 安装
    • 基本配置
  • 二、SSH密钥配置

  • 为什么要使用代码版本管理工具:

最近笔者确实因为未使用代码版本管理工具遇到了一些愚蠢的问题,笔者因此认为代码版本管理工具对于提高团队协作效率非常有帮助。

使用代码版本管理工具可以提高团队的协作效率,降低代码丢失的风险。在没有版本管理工具的情况下,如果多个开发人员同时修改同一个文件,可能会导致代码的丢失或覆盖;难以跟踪每个人的更改、合并不同分支的代码以及解决代码冲突,这会导致团队之间的沟通和合作问题;当出现问题或错误时很难追踪其源头;无法轻松地备份和恢复代码。

  • GitLab和Github的区别:

GitLab可能更适合企业或团队,以及需要更多项目管理和扩展功能的场景;GitHub更适合个人开发者或开源项目,用户可以更好地参与社区和分享代码。此外,在中国地区,GitLab相比Github在网络连接上更加稳定,笔者使用Github十次有九次都会连接失败,但是使用Gitlab却不会,这是笔者选择Gitlab的主要原因。

一、Git安装与基本配置(Windows)

参考:https://docs.gitlab.com/ee/topics/git/how_to_install_git/index.html

下载

官网下载地址:https://git-scm.com/download/win

卸载

由于我已经安装了Git,为了展示完整的过程,我先把它卸载了:

1 删除相关环境变量
2 控制面板中卸载Git工具

安装

打开下载的安装包,除了安装目录自定义和默认分支设置为main,其余的无脑下一步安装。

安装好后会有三个工具可供使用,Git Bash是linux风格的命令行, 最常用 ;Git CMD是windows风格的命令行;Git GUI是图形化操作界面。

在这里插入图片描述

基本配置

  • 直接操作配置文件即可:

D:\setup\Git\etc\gitconfig 安装目录下的配置是系统配置
C:\Users\电脑用户名.gitconfig 用户目录下的配置是用户全局配置

  • 配置gitlab/github用户名和邮箱:
[user]name = Your Nameemail = your.email@example.com
  • 另外还可以使用命令行工具如Git Bash运行以下命令来配置Git:
git config --global user.name "Your Name"
git config --global user.email "your.email@example.com"
  • 验证配置是否生效:

在终端执行命令git config --list即可验证。

二、SSH密钥配置

简单来说,远端的GitLab使用SSH协议与本地Git进行安全通信。

  1. SSH密钥生成:

在本地终端运行以下命令:

ssh-keygen -t rsa -b 4096 -C "your_email@example.com"

ssh-keygen:这是SSH密钥生成器的命令。
-t rsa:这是指定要生成的密钥类型,这里选择了RSA算法。RSA是一种非对称加密算法,常用于生成SSH密钥对。
-b 4096:这是指定密钥的位数,这里选择了4096位。较长的密钥位数提供更高的安全性,但也需要更长的时间来生成和处理。
-C “your_email@example.com”:这是指定注释,通常是关联密钥的电子邮件地址。注释是可选的,但是添加一个描述性的注释可以帮助我们标识密钥的用途和所有者。

该命令将生成一个RSA密钥对,并将私钥保存在本地的C:\Users\14095/.ssh/id_rsa目录下,公钥则保存在同一目录的id_rsa.pub中。

  1. 公钥添加到GitLab: 先选择Gitlab左侧边栏的SSH选项,然后点击Add new key,粘贴公钥并保存。

  2. SSH通信建立: 当我们使用SSH URL(例如git@gitlab.com:your_username/your_repository.git)进行Git操作时,本地Git会通过SSH与GitLab进行通信。

通过使用SSH进行通信,可以在本地和GitLab之间进行安全的Git操作,而无需每次都输入用户名和密码。此外,SSH还提供了对数据传输的加密,以保护代码和敏感信息。

  • 下面来验证一下ssh密钥是否成功配置:

在本地终端执行命令即可验证ssh是否成功配置:

ssh -T git@gitlab.com

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/805845.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

JR-SMD201-P便携式网络解码器

详细介绍: JR-SMD201-P便携式网络解码器采用1/2U设计,支持AVS/H.265/H.264/MPEG2解码,支持IP输入,支持1080P/1080I/720P/576I/480I多种分辨率,支持DRA/AC3/EAC3/AAC/MPEG等音频。 产品特点 支持输入方式IP 接口丰富&a…

React 状态管理:安全高效地修改对象属性的 3 种方法

在 React 应用程序中,状态(state)是驱动整个应用程序的核心。当应用程序的状态发生变化时,React 会自动重新渲染相应的组件,以确保用户界面的更新。 与数组状态一样,对象状态在 React 中也需要特别处理。直接修改对象属性是不被允许的,因为 React 的不可变性原则要求我们创建一…

户外骑行存档(图新地球与运动健康App)经验分享

0序 之前天天加班熬夜,身体素质有些下降,在锻炼的过程中喜欢上了骑行,周周骑、天天骑。 骑行会产生很多的轨迹(有很多朋友不喜欢装很多app,就用手机自带的运动健康,也有喜欢专业运动app的,道理…

RedisDesktopManager 命令

RedisDesktopManager 命令 Redis Desktop Manager(RDM)是一个图形化工具,用于管理和监控Redis数据库。虽然其主要功能是提供直观的用户界面来与Redis交互,但它也内置了一个命令行界面(Console)&#xff0c…

SQL注入原理与信息获取及常规攻击思路靶场实现

SQL注入原理与信息获取及常规攻击思路靶场实现 很早的时候就写了,权当备份吧 Web程序三层架构 表示层 :与用户交互的界面 , 用于接收用户输入和显示处理后用户需要的数据 业务逻辑层 :表示层和数据库访问层之间的桥梁 , 实现业务逻辑 ,验证、…

BPMN.JS中文教程学习

基础篇 vue bpmn.js 建模BpmnModeler将数据转图形bpmnModeler.importXML // basic.vue<script>// 引入相关的依赖import BpmnModeler from bpmn-js/lib/Modelerimport {xmlStr} from ../mock/xmlStr // 这里是直接引用了xml字符串export default {name: ,components: {…

三维点云:对原始点云数据进行体素化

文章目录 一、原始点云二、对原始点云进行体素化三、结果展示 一、原始点云 &#x1f349;原始点云为.pts文件&#xff0c;内容为x, y, z的坐标 原始点云展示 二、对原始点云进行体素化 使用open3d库实现&#xff0c;如果没有需要在命令行执行pip install open3d import o…

从零开始学RSA:低加密指数广播攻击

(10)低加密指数广播攻击 如果选取的加密指数较低&#xff0c;并且使用了相同的加密指数给一个接受者的群发送相同的信息&#xff0c;那么可以进行广播攻击得到明文。 适用范围&#xff1a;模数n、密文c不同&#xff0c;明文m、加密指数e相同。一般情况下&#xff0c;ek (k是题…

vue vue3 手写 动态加载组件

效果展示 一、需求背景&#xff1a; # vue3 项目涉及很多图表加载、表格加载 #考虑手写一个动态加载组件 二、实现思路 通过一个加载状态变量&#xff0c;通过v-if判断&#xff0c;加载状态的变量等于哪一个&#xff0c;动态加载组件内部就显示的哪一块组件。 三、实现效果…

25.设置及使用coredump文件

设置及使用coredump文件 文章目录 设置及使用coredump文件coredump文件介绍开启关闭核心转储core dumps功能开启核心转储生成功能关闭生成转储文件 coredumps文件的使用查看core进程的所有线程堆栈reference 欢迎访问个人网络日志&#x1f339;&#x1f339;知行空间&#x1f3…

2404d,d符号表示dip1045

原文 符号表示 概述 符号是本地语言功能的最终表示.在编译器或语言级别,不准确表示它们可能会导致链接失败.这些问题可能是令人沮丧的重要来源,甚至可能导致人们认为无法实现方法. 此DIP的目的是解决和纠正各种跨平台和目标的常见共享库链接错误. 理由 对不熟悉链接器的人…

数位DP模型

目录 度的数量思路代码实现暴力解法数位DP 数字游戏代码实现 Windy数代码实现 数字游戏 II代码实现 不要62代码实现 恨7不成妻代码实现 度的数量 题目描述&#xff1a; 求给定区间 [ X , Y ] [X,Y] [X,Y] 中满足下列条件的整数个数&#xff1a;这个数恰好等于 K K K 个互不…

安装Schedule库的方法最终解答!_Python第三方库

安装Python第三方库Schedule 我的环境&#xff1a;Window10&#xff0c;Python3.7&#xff0c;Anaconda3&#xff0c;Pycharm2023.1.3 Schedule库 Schedule 是一个轻量级、功能强大而灵活的任务调度工具库&#xff0c;用于在指定的时间间隔内执行任务。为用户提供了简单易用的…

kali使用msf+apkhook520+cploar实现安卓手的攻击

学习网络安全的过程中&#xff0c;突发奇想怎么才能控制或者说是攻击手机 边找工作边实验 话不多说启动kali 一、使用msfapktool生成简单的木马程序 首先使用kali自带的msfvenom写上这样一段代码 选择安卓 kali的ip 一个空闲的端口 要输出的文件名 msfvenom -p android/met…

kafka(五)——消费者流程分析(c++)

概念 ​ 消费者组&#xff08;Consumer Group&#xff09;&#xff1a;由多个consumer组成。消费者组内每个消费者负责消费不同分区的数据&#xff0c;一个分区只能由一个组内消费者消费&#xff1b;消费者组之间互不影响。所有的消费者都属于某个消费者组&#xff0c;即消费者…

计算机是怎么工作的7

内存分配——内存管理&#xff08;Memory Mangae) 进程如何管理内存&#xff0c;其实是一个非常复杂的事情 核心结论&#xff1a;每个进程的内存&#xff0c;是彼此独立&#xff0c;互不干扰的 通常情况下&#xff0c;进程A不能直接访问进程B的内存; 为了系统的稳定性 如果…

今日arXiv最热大模型论文:Dataverse,针对大模型的开源ETL工具,数据清洗不再难!

引言&#xff1a;大数据时代下的ETL挑战 随着大数据时代的到来&#xff0c;数据处理的规模和复杂性不断增加&#xff0c;尤其是在大语言模型&#xff08;LLMs&#xff09;的开发中&#xff0c;对海量数据的需求呈指数级增长。这种所谓的“规模化法则”表明&#xff0c;LLM的性…

HTML - 请你说一下如何阻止a标签跳转

难度级别:初级及以上 提问概率:55% a标签的默认语义化功能就是超链接,HTML给它的定位就是与外部页面进行交流,不过也可以通过锚点功能,定位到本页面的固定id区域去。但在开发场景中,又避免不了禁用a标签的需求,那么都有哪些方式可以禁用…

【就近接入,智能DNS-Geo DNS ,大揭秘!】

做过后端服务或者网络加速的小伙伴&#xff0c;可能或多或少都听说过&#xff0c;智能DNS或者Geo DNS&#xff0c;就是根据用户的位置&#xff0c;返回离用户最近的服务节点&#xff0c;就近接入&#xff0c;以达到服务提速的效果。 那么大家有没想过&#xff0c;这个背后的原理…

成绩分析 蓝桥杯 java

成绩分析 小蓝给学生们组织了一场考试&#xff0c;卷面总分为 100 分&#xff0c;每个学生的得分都是一个 0 到 100 的整数。 请计算这次考试的最高分、最低分和平均分。 输入格式 输入的第一行包含一个整数 n&#xff0c;表示考试人数。 接下来 n 行&#xff0c;每行包含一…