Git教程学习:01 Git简介与安装

目录

    • 1 版本控制
      • 1.1 什么是版本控制系统?
      • 1.2 本地版本控制系统
      • 1.3 集中式版本控制系统
      • 1.4 分布式版本控制系统
    • 2 Git简史
    • 3 Git的安装
      • 3.1 在Linux上安装
      • 3.2 初次运行Git前的配置

1 版本控制

1.1 什么是版本控制系统?

版本控制系统(Version Control System,简称VCS),是一种记录一个或若干文件内容变化,以便将来查询特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制。

有了版本控制系统,我们可以将选定的文件回溯到之前的状态,甚至将整个项目回退到过去某个时间点的状态,我们可以比较文件的的变化细节,查出最后是谁修改了哪个地方,从而找出导致怪异问题出现的原因,又是谁在何时报告了某个功能的缺陷等等。使用版本控制系统通常还意味着,就算我们乱来一气把整个项目中的文件改的改删的删,我们也照样可以轻松恢复到原先的样子。但额外增加的工作量却微乎其微。

1.2 本地版本控制系统

本地版本系统大多都是采用某种简单的数据库来记录文件的历次更新差异。

image-20240115103210508

其中最流行的一种叫做RCS,现今许多计算机系统上都还看得到它的踪影。RCS的工作原理是在硬盘上保存补丁集(补丁集是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。

1.3 集中式版本控制系统

集中式版本控制系统(Centralized Version Control Systems,简称CVCS):集中式版本库集中存放于一个单一的中央服务器,保存所有文件的修订版本。人们需要先从中央服务器取得最新的版本,然后开始干活,干完活后,在把自己的活推送给中央服务器。因此,集中式版本控制器需要在联网的情况下才能开始工作。

image-20240115104618366

==缺点:==中央服务器的单点故障。如果宕机一小时,那么在这一小时内,谁也无法提交更新,也就无法协同工作。如果中心数据库所在的磁盘发生损坏,又没有做恰当的备份,所有的数据就会丢失——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。

1.4 分布式版本控制系统

分布式版本控制系统(Distributed Version Control Systems,简称DVCS):分布式版本控制系统中没有“中央服务器”,在这类系统中,像Git、Mercurial以及Darcs等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来,包括完整地历史记录。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,我们就可以在同一个项目中,分别和不同工作小组的人相互协作。 我们可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。

image-20240116145448830

2 Git简史

Linux 内核开源项目有着为数众多的参与者。 绝大多数的 Linux 内核维护工作都花在了提交补丁和保存归档的繁琐事务上(1991-2002年间)。 到 2002 年,整个项目组开始启用一个专有的分布式版本控制系统 BitKeeper 来管理和维护代码。

到了 2005 年,开发 BitKeeper 的商业公司同 Linux 内核开源社区的合作关系结束,他们收回了 Linux 内核社区免费使用 BitKeeper 的权力。 这就迫使 Linux 开源社区(特别是 Linux 的缔造者 Linus Torvalds)基于使用 BitKeeper 时的经验教训,开发出自己的版本系统。 他们对新的系统制订了若干目标:

  • 速度
  • 简单地设计
  • 对非线性开发模式的强力支持(允许成千上万个并行开发的分支)
  • 完全分布式
  • 有能力高效管理类似Linux内核一样的超大规模项目(速度和数据量)

自诞生于 2005 年以来,Git 日臻成熟完善,在高度易用的同时,仍然保留着初期设定的目标。 它的速度飞快,极其适合管理大项目,有着令人难以置信的非线性分支管理系统(参见 Git 分支)。

3 Git的安装

3.1 在Linux上安装

这里我主要是在VMware虚拟机中的CentOS7上操作的,在terminal中输入命令:

$ sudo dnf install git-all

image-20240116152349237

更详细的安装方式参考链接:安装Git

3.2 初次运行Git前的配置

当我们安装好Git后,还需要再terminal进行一些相关设置。

git config --global user.name "Your Name"
git config --global user.email "email@example.com"

除此之外,Git还有许多设置,包括常用编辑器等,可以键入如下命令查看设置并修改:

git config --list

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

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

相关文章

Gin 框架之Cookie与Session

文章目录 一、Cookie和Session的由来二、Cookie简介1. 什么是Cookie2. Cookie规范3. 安全性4. Cookie 关键配置 三、Session简介1. 什么是Session2. Session 安全性3. 如何让客户端携带 sess_id 四、使用 Gin 的 Session 插件4.1 介绍4.2 基本使用 五、 session与store5.1 会话…

面对根据角色和单子状态如何有效的进行按钮权限的控制

当阁下看到这个按钮权限控制时,该如何应对 按钮权限是根据工单流程状态进行的,当工单走到某个流程时就显示该表格中对应的状态,初看也就简简单单,仔细一看,逻辑还是很复杂, 首先这里得说一下背景&#xff…

2024--Django平台开发-订单项目管理(十四)

day14 订单管理系统 1.关于登录 1.1 UI美化 页面美化,用BootStrap 自定义BooStrapForm类实现。 class BootStrapForm:exclude_filed_list []def __init__(self, *args, **kwargs):super().__init__(*args, **kwargs)# {title:对象,"percent":对象}fo…

ACL【新华三与华为的区别】

【解释】acl简单点解释就是,一套根据需求而设置的规则 【背景】 192.168.1.0/24 网段不允许访问 192.168.2.0/24 网段,要求使用基本 ACL 实现20_1 可以访问 20_6 的 TELNET 服务,但不能访问 FTP 服务 【操作步骤】 {易混点 }:1. …

阿里二面:要保证消息不丢失,又不重复,消息队列怎么选型?

大家好,我是君哥。 在使用消息队列时,有两个经常让我们烦恼的问题,消息丢失和消息重复。那我们在做技术选型时,有没有一个消息队列能解决消息丢失和消息重复这两个问题呢? 消息丢失 如上图,从生产者发送消…

小程序学习-17

attached最常用 推荐使用 lilfetimes 这种方法

【Linux】Linux进程间通信(四)

​ ​📝个人主页:Sherry的成长之路 🏠学习社区:Sherry的成长之路(个人社区) 📖专栏链接:Linux 🎯长路漫漫浩浩,万事皆有期待 上一篇博客:【Linux】…

基于嵌入式的智能智能通风系统

基于嵌入式的智能智能通风系统 功能说明 通过微信小程序控制窗户的开关状体以及倒计时开关和定时开关,小程序上实时显示当前温度湿度和光照强度。 功能展示 02智能通风系统 Mqtt服务器 http://www.yoyolife.fun/iot:Mqtt服务器,我是在这里注…

前端react入门day03-react获取dom与组件通信

(创作不易,感谢有你,你的支持,就是我前行的最大动力,如果看完对你有帮助,请留下您的足迹) 目录 受控表单绑定 React中获取DOM 组件通信 父传子 父传子-基础实现 父传子-props说明 父传子 - 特殊的…

J4 - ResNet与DenseNet结合

🍨 本文为🔗365天深度学习训练营 中的学习记录博客🍖 原作者:K同学啊 | 接辅导、项目定制 目录 环境模型设计模型效果展示总结与心得体会 环境 系统: Linux语言: Python3.8.10深度学习框架: Pytorch2.0.0cu118显卡:GT…

构建坚固网络,SD-WAN网络配置指南

在新兴的网络技术中,软件定义广域网(SD-WAN)作为关键角色脱颖而出,被广泛应用于构建高效可靠的企业网络。利用SD-WAN技术,企业能够更好地管理和优化其网络基础设施,实现更高效的连接和数据传输。本文将深入…

STM32标准库开发——串口发送/单字节接收

USART基本结构 串口发送信息 启动串口一的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_USART1,ENABLE);初始化对应串口一的时钟,引脚,将TX引脚设置为复用推挽输出。 RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA,ENABLE); GPIO_InitTypeDef GPIO_In…