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 Name
    email = 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

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

魔法阵-蓝桥每日真题

0魔法阵 - 蓝桥云课 (lanqiao.cn) #include <iostream> #include <queue> #include <vector> #include <cstring> #include <algorithm>using namespace std;#define x first #define y second const int N 1010; const int inf 1e4; vector&…

【汇编语言实战】求两组给定数组最大值

C语言描述该程序流程&#xff1a; #include <stdio.h> int main() {int arr1[]{11,33,23,542,12233,5443,267,456,234,453};int arr2[]{21,123,432,45,234,534,6517,678,879,1};int maxarr1[0];for(int i1;i<10;i){if(arr1[i]>max){maxarr1[i];}}printf("%d\…

蓝桥杯练习系统(算法训练)ALGO-956 P0702 strcmp 函数

资源限制 内存限制&#xff1a;256.0MB C/C时间限制&#xff1a;1.0s Java时间限制&#xff1a;3.0s Python时间限制&#xff1a;5.0s 在C语言中&#xff0c;有一个strcmp函数&#xff0c;其功能是比较两个字符串s1和s2。请编写一个你自己的字符串比较函数my_strcmp&…

设计模式——装饰器模式09

装饰器模式&#xff1a;是在原有基础上进行装饰&#xff08;无修改原来代码&#xff09;&#xff0c;来添加新的功能。 例如下面对普通耳机进行装饰。 设计模式&#xff0c;一定要敲代码理解 修饰对象&#xff08;抽象&#xff09; /*** author ggbond* date 2024年04月07日…

ShardingSphere-ShardingSphere读写分离和数据脱敏

文章目录 一、读写分离1.1 读写分离1.2 读写分离应用方案1.3 分表+读写分离1.4 分库分表+读写分离二、ShardingSphere-JDBC读写分离2.1 创建SpringBoot并添加依赖2.2 创建实体类2.3 创建mapper2.4 配置读写分离2.5 测试测试插入数据测试读测试事务一致性测试负载均衡一、读写分…

appium图像识别之images-plugin插件

在进行App自动化测试的过程中&#xff0c;由于页面的复杂性&#xff0c;需要根据页面的技术实现&#xff0c;通过上下文来切换不同的定位类型&#xff0c;给定位元素的稳定性带来了不小的挑战&#xff1b;图像识别技术则不依赖于页面本身是用什么技术实现的&#xff0c;只要能识…

打卡--MySQL8.0 四 (索引及执行计划)

一、索引的创建与使用 1、索引的分类 MySQL的索引包括普通索引、唯一性索引、全文索引、单列索引、多列索引和空间索引等。 &#xff08;1&#xff09;从 功能逻辑 上说&#xff0c;索引主要有 4 种&#xff0c;分别是普通索引、唯一索引、主键索引、全文索引。 &#xff08;…

【微服务】------服务注册

在 微服务的基建工作 中提到过&#xff0c;在云原生、微服务时代&#xff0c;如果还是手动修改服务地址&#xff0c;是几乎不可完成的工作&#xff0c;需要一种机制完成自动上报和获取服务地址的支撑组件&#xff0c;可以保障服务的快速上线和下线&#xff0c;这就是服务注册/发…

Netty学习——高级篇2 Netty解码技术 备份

接上篇&#xff1a;Netty学习——高级篇1 拆包 、粘包与编解码技术&#xff0c;本章继续介绍Netty的其他解码器 1 DelimiterBasedFrameDecoder分隔符解码器 DelimiterBasedFrameDecoder 分隔符解码器是按照指定分隔符进行解码的解码器&#xff0c;通过分隔符可以将二进制流拆分…

蓝桥2021A组B题

直线 问题描述格式输入格式输出评测用例规模与约定解析参考程序难度等级 问题描述 格式输入 无 格式输出 填空题提交答案即可 评测用例规模与约定 无 解析 题目要求点和点确定一条直线&#xff0c;如果没有多个点在同一条直线只能算一条直线这个条件就很简单。一共21*20个…

【PDF-XSS攻击】Java项目-上传文件-解决PDF文件XSS攻击

文章目录 背景解决pdfbox依赖控制器代码PdfUtils工具类 验证最后源码参考 背景 上传xss-pdf造成存储型xss因为在浏览器直接预览的PDF&#xff0c;而不是预览&#xff0c;所以安全部门认为会有XSS漏洞 解决 安全部门修复建议 1、根据白名单的标签和属性对数据进行过滤&#…

Day1 省选衔接题 思路总结

Day1 省选题 思路 取数 可反悔的贪心。我们开一个双向链表记录此时每个数的前/后一个数是什么。一个简单但不一定正确的贪心策略即为&#xff1a;每次都取走当前值最大的且可取的数&#xff0c;并更新列表。考虑如何使这个贪心思路正确。 设 p r e x pre_x prex​ 表示 x x …

OpenHarmony应用开发引入开源C/C++库---之Har包里的NDK

Har 包 HAR&#xff08;Harmony Archive&#xff09;是静态共享包&#xff0c;可以包含代码、C 库、资源和配置文件。通过 HAR 可以实现多个模块或多个工程共享 ArkUI 组件、资源等相关代码。HAR 不同于 HAP&#xff0c;不能独立安装运行在设备上&#xff0c;只能作为应用模块…

HTML基础(3)

1、内联框架 iframe用于在网页内显示网页&#xff0c;语法如下&#xff1a; <iframe src"URL"></iframe> URL指向隔离页面 hight&#xff0c;weight设置高宽&#xff0c;删除边框将frameborder设置为0 <td> <iframe frameborder"0&qu…

用C代码实现环形缓冲区(ring buf)

用C代码实现环形缓冲区&#xff08;ring buf&#xff09; 概述环境介绍launch.json(没改&#xff09;tasks.json注意 代码ringbuf.cringbuf.hmain.c 测试说明工程代码下载 概述 因嵌入式项目需要&#xff0c;串口接收的数据有很高的周期性发送频率&#xff0c;原方式通过查询接…

VideoGPT:Video Generation using VQ-VAE and Transformers

1.introduction 对于视频展示&#xff0c;选择哪种模型比较好&#xff1f;基于似然->transformers自回归。在没有空间和时间溶于的降维潜在空间中进行自回归建模是否优于在所有空间和时间像素级别上的建模&#xff1f;选择前者&#xff1a;自然图像和视频包括了大量的空间和…

java程序生成exe文件启动时,在没有java环境计算机运行

1.idea项目配置工件 2. 开始构建java程序成jar包 3. 生成exe启动程序 注&#xff1a;下面的输入框中写错了&#xff0c;应该是.\jre才对 4. 在已经选择的生成exe存放文件夹找到已经生成exe启动程序

一文详解静态图和动态图中的自动求导机制

01 静态图与动态图的区别 之前在[1]中提到过&#xff0c;自动求导&#xff08;AutoDiff&#xff09;机制是当前深度学习模型训练采用的主要方法&#xff0c;而在静态图和动态图中对于自动求导的处理是不一样的。作为前置知识&#xff0c;这里简单进行介绍。 我们都知道静态图…

Vue.js------vue基础

1. 能够了解更新监测, key作用, 虚拟DOM, diff算法2. 能够掌握设置动态样式3. 能够掌握过滤器, 计算属性, 侦听器4. 能够完成品牌管理案例 一.Vue基础_更新监测和key 1.v-for更新监测 目标&#xff1a;目标结构变化, 触发v-for的更新 情况1: 数组翻转情况2: 数组截取情况3…

QT:信号与槽

作业&#xff1a; 完善对话框&#xff0c;点击登录对话框&#xff0c;如果账号和密码匹配&#xff0c;则弹出信息对话框&#xff0c;给出提示”登录成功“&#xff0c;提供一个Ok按钮&#xff0c;用户点击Ok后&#xff0c;关闭登录界面&#xff0c;跳转到其他界面 如果账号和…