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

分布式版本控制工具软件——Git概述

目录

  • 一、Git概述
    • 1.为什么要学习Git?
      • (1)SCM概念
      • (2)SCM实现
    • 2.什么是版本控制?
      • (1)版本控制软件的基础功能
      • (2)集中式版本控制
      • (3)分布式版本控制
    • 3.为什么要选择Git?
      • (1)分布式版本控制
      • (2)高效的分支和合并机制
      • (3)速度和性能
      • (4)广泛的应用
      • (5)强大的社区和生态系统
  • 二、Git的安装
    • 软件安装
    • 客户端的安装

一、Git概述

官网:https://git-scm.com/官网链接
在这里插入图片描述

Git是一个免费的,开源的分布式版本控制系统,可以快速高效地处理从小型或大型的各种项目。Git易于学习,占用空间小,性能强大。

在这里插入图片描述

1.为什么要学习Git?

(1)SCM概念

  • SCM(Software Configuration Management)是一种软件工程领域的概念,用于管理软件项目中的配置项和变更,以确保团队成员能够协同工作并追踪项目的演变。SCM 通常涉及版本控制、配置管理、构建管理、发布管理等方面的工作。

  • CMM(Capability Maturity Model )能力成熟度模型作为评价一个大中型软件开发过程是否正确,合理,有效的重要手段,提供了不同等级的标准流程,对软件开发过程(流程)进行了约束和建议,。

  • 作为CMM 2级的一个关键域(Key Practice Area,KPA),SCM软件在整个软件的开发活动中占有很重要的位置。

(2)SCM实现

  • SCM 是一种概念,用于管理软件项目中的配置项和变更。
  • 而 Git 则是 SCM 概念的一个具体实现,它提供了一套工具和机制来管理源代码、跟踪变更、协作开发等,从而实现了 SCM 的功能。

2.什么是版本控制?

  • 一般情况下,一份文件,无论是DOC办公文档,还是编程源码文件,我们都会对文件进行大量的修改和变更。
  • 但是我们无法保证每一次的修改和变更都是正确并有效的,往往有的时候需要追溯历史操作,而版本控制(Revision control)是一种在开发的过程中用于管理我们对文件、目录或工程等内容的修改历史,方便查看更改历史记录,备份以便恢复以前的版本的软件工程技术。
  • 没有进行版本控制或者版本控制本身缺乏正确的流程管理,在软件开发过程中将会引入很多问题,如软件代码的一致性、软件内容的冗余、软件过程的事物性、软件开发过程中的并发性、软件源代码的安全性,以及软件的整合等问题。

在这里插入图片描述

(1)版本控制软件的基础功能

  • 1.保存和管理文件

    • 将文件存储在版本控制系统中,并记录文件的历史变更。
    • 提供对文件的增加、修改和删除操作,并记录这些变更。
    • 每个文件的不同版本进行组织和管理,以便开发者能够轻松地查找和访问历史版本。
      在这里插入图片描述
  • 2.提供客户端工具进行访问

    • 提供命令行界面(CLI)和图形用户界面(GUI)等不同的客户端工具,以便开发者能够方便地访问和操作版本控制系统。
    • 客户端工具通常提供文件的检出(checkout)、提交(commit)、更新(update)等操作,以及查看文件历史、比较文件差异等功能。
      在这里插入图片描述
  • 3.提供不同版本文件的比对功能
    在这里插入图片描述

    • 提供比较文件不同版本之间的差异和变更。
    • 支持文件版本之间的对比,以便开发者可以查看文件的修改历史和变更详情。
    • 提供可视化的比对工具,帮助开发者更直观地理解文件的变更情况,并进行决策和调整。

(2)集中式版本控制

集中式版本控制是一种传统的版本控制系统,它与分布式版本控制系统相对。

在集中式版本控制系统中,所有的版本信息和文件都存储在一个中央服务器上,而开发者通过客户端工具与中央服务器进行交互。

一些著名的集中式版本控制系统包括 CVS(Concurrent Versions System)和 SVN(Apache Subversion)等。

集中式版本控制系统的特点和基本原理:

  • 1.中央化存储:所有的文件和版本信息都存储在中央服务器上,开发者通过与中央服务器进行交互来管理和获取文件。

  • 2.客户端-服务器架构:开发者使用客户端工具来与中央服务器进行通信和操作。这些客户端工具通常提供文件的检出、提交、更新等基本操作。

  • 3.依赖网络连接:开发者需要与中央服务器保持网络连接才能进行版本控制操作,因为所有的文件和版本信息都存储在中央服务器上。

  • 4.协作和分支管理:集中式版本控制系统通常提供基本的协作和分支管理功能,但相对于分布式版本控制系统来说,这些功能可能不够灵活和强大。

  • 5.版本冲突:由于所有的开发者都是直接与中央服务器进行交互,因此可能会出现版本冲突的情况。当多个开发者同时修改同一个文件时,可能会导致冲突,需要手动解决。

虽然集中式版本控制系统在过去被广泛使用,并且仍然在一些项目中被采用,但随着分布式版本控制系统(如 Git)的兴起,它的使用逐渐减少。分布式版本控制系统具有更加灵活、高效和安全的特性,逐渐成为了主流。

在这里插入图片描述
集中式版本控制系统的一些主要缺点:

  • 1.单点故障:集中式版本控制系统依赖于中央服务器,如果中央服务器发生故障或者不可用,那么团队将无法进行代码的提交、更新或者检出操作,从而导致工作停滞。
  • 2.网络依赖:由于所有的版本信息都存储在中央服务器上,开发者需要通过网络连接才能进行版本控制操作。如果网络连接不稳定或者中断,开发者将无法进行代码操作,导致开发效率下降。
  • 3.性能瓶颈:随着项目规模的增大和团队人数的增加,中央服务器可能会成为性能瓶颈,导致代码操作的速度变慢,特别是在需要频繁提交和更新代码的情况下。
  • 4.版本冲突:由于所有的开发者都是直接与中央服务器进行交互,因此可能会出现版本冲突的情况。当多个开发者同时修改同一个文件时,可能会导致冲突,需要手动解决。
  • 5.不利于分布式团队:集中式版本控制系统更适合集中式团队,而对于分布式团队或者远程团队来说,由于依赖于中央服务器,可能会导致协作效率降低。

(3)分布式版本控制

分布式版本控制系统(Distributed Version Control System,DVCS)是一种版本控制系统,与传统的集中式版本控制系统相比,它具有分散存储和本地操作的特点。

分布式版本控制系统的特点和基本原理:

  • 1.分散存储:每个开发者都拥有完整的代码仓库的副本,而不仅仅是对中央服务器的一个连接。这意味着每个开发者都可以在本地进行版本控制操作,而不需要依赖网络连接。

  • 2.本地操作:开发者可以在本地进行提交、分支、合并等版本控制操作,而不需要每次都与中央服务器进行通信。这样可以提高操作的速度和效率,并且在没有网络连接的情况下仍然能够进行版本控制操作。
    在这里插入图片描述

  • 3.强大的分支管理:分布式版本控制系统通常提供更加灵活和强大的分支管理功能。开发者可以轻松创建、合并、删除分支,从而支持各种复杂的开发工作流程。

  • 4.高度安全:由于每个开发者都拥有完整的代码仓库的副本,因此即使中央服务器发生故障或遭受攻击,代码仓库仍然可以通过其他开发者的副本进行恢复和重建。

  • 5.适合分布式团队:分布式版本控制系统特别适合分布式团队或远程团队的协作开发。每个团队成员都可以在本地进行版本控制操作,并且可以轻松地共享和同步代码变更。


3.为什么要选择Git?

(1)分布式版本控制

  • Git 是一种分布式版本控制系统,每个开发者都可以在本地拥有完整的代码仓库,并且可以独立地进行开发和提交。
  • 这种分布式的特性使得团队能够更加灵活地工作,不会受到中央服务器的限制,也更容易应对网络故障等情况。

(2)高效的分支和合并机制

  • Git 提供了强大而灵活的分支和合并功能,使得开发团队可以轻松地创建、管理和合并分支。
  • 这使得团队能够同时进行多个特性的开发,而不会相互干扰,同时也能够更容易地进行代码审查和版本控制。

(3)速度和性能

  • Git 被设计为高效和快速的版本控制系统,在处理大型代码仓库和大量文件时表现优异。
  • 它使用了一些优化算法和数据结构,使得提交、分支操作等操作都能够在很短的时间内完成。
  • Git软件比SubversionCVSPerforceClearCase等SCM(Software Configuration Management软件配置管理)工具具有性价比更高的本地分支、方便的暂存区域和多个工作流等功能。

在这里插入图片描述

(4)广泛的应用

  • Git 已经成为了业界标准的版本控制系统之一,许多知名的开源项目和企业都在使用 Git 进行版本控制和团队协作。
    在这里插入图片描述

(5)强大的社区和生态系统

  • Git 是一个开源项目,拥有庞大的社区和活跃的开发者社群。
  • 这意味着你可以轻松地找到大量的教程、文档和插件来帮助你学习和使用 Git,同时也能够从社区中获得支持和解决问题。


二、Git的安装

软件安装

下载地址:https://git-scm.com/downloads

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
验证是否安装成功

在Windows桌面空白处,点击鼠标右键,弹出右键菜单

选择Git Bash Here菜单, 选择后,Windows系统弹出Git软件的命令行黑窗口
在这里插入图片描述

窗口弹出后,可以输入Git软件的操作指令。此时我们使用键盘输入操作指令:git -v或 git --version,查看当前Git软件的安装版本。

git -v
git --version

输入指令回车后,如果黑窗口中打印出咱们安装的软件版本2.40.0,Git软件安装成功了。
在这里插入图片描述


客户端的安装

下载地址:https://desktop.github.com/
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述


推荐一个练习 Git 网站
https://learngitbranching.js.org/

相关文章:

分布式版本控制工具软件——Git概述

目录 一、Git概述1.为什么要学习Git?(1)SCM概念(2)SCM实现 2.什么是版本控制?(1)版本控制软件的基础功能(2)集中式版本控制(3)分布式版…...

【一百零八】【算法分析与设计】P1908 逆序对,P1637 三元上升子序列,树状数组区间和应用

P1908 逆序对 逆序对 题目描述 猫猫 TOM 和小老鼠 JERRY 最近又较量上了,但是毕竟都是成年人,他们已经不喜欢再玩那种你追我赶的游戏,现在他们喜欢玩统计。 最近,TOM 老猫查阅到一个人类称之为“逆序对”的东西,这东西…...

【RK3568】制作Android11开机动画

Android 开机 logo 分为两种:静态显示和动态显示。静态显示就是循环显示一张图片;动态显示就是以特定帧率顺序显示多张图片 1.准备 android logo 图片 Android logo最好是png格式的,因为同一张图片的情况下,png 格式的比 jpg和b…...

chrony内网同步服务器时间

当前需要在10.26.24.62和10.26.24.61两个服务器上设置chrony同步时间,其中10.26.24.62为NTP时间服务器,10.26.24.61去10.26.24.62同步时间 检查Chrony配置文件: 确认10.26.24.62(NTP服务器)的配置文件 /etc/chrony/c…...

SSM物流管理系统的设计与实现-计算机毕业设计源码44323

摘 要 科技进步的飞速发展引起人们日常生活的巨大变化,电子信息技术的飞速发展使得电子信息技术的各个领域的应用水平得到普及和应用。信息时代的到来已成为不可阻挡的时尚潮流,人类发展的历史正进入一个新时代。在现实运用中,应用软件的工作…...

STM32CubeIDE使用过程记录

最近在做一款机器人的开发,使用到了STM32CubeIDE,这里记录一些使用技巧方便后续查阅。 STM32CubeIDE使用过程记录 快捷键开启代码自动补全功能看门狗设置CRC设置IO口取反定时器设置 及 定时器中断外部中断GPIO配置STC15单片机GPIO模式配置片内闪存&#…...

angular2开发知识点

目录 文章目录 一、API 网关地址 配置二、服务注册使用三、模块组件注册使用四、html中style类动态绑定1. 单个类的绑定:[class.special]"isSpecial"2. 多个类的绑定:[ngClass]"{selected:status ,saveable: this.canSave,}"3. 单个…...

【机器学习】机器学习与智能交通在智慧城市中的融合应用与性能优化新探索

文章目录 引言机器学习与智能交通的基本概念机器学习概述监督学习无监督学习强化学习 智能交通概述交通流量预测交通拥堵管理智能信号控制智能停车管理 机器学习与智能交通的融合应用实时交通数据分析数据预处理特征工程 交通流量预测与优化模型训练模型评估 智能信号控制与优化…...

走的人多了,也便成了路(七)

好多年前就听到这样的说法:一流的企业做标准,二流的企业做品牌,三流的企业做产品。 在通信行业待久了,经历了移动通信技术标准的发展历程,体会到很多事情没有那么神秘,甚至由于一些偶然因素的出现&#xff…...

UE5中在地形中加入湖、河

系统水资产添加 前提步骤123 完成 前提 使用版本 UE5.0.3,使用插件为UE内置的Water和water Extras. 步骤 1 记得重启 2 增加地形&#xff0c;把<启用编辑图层>勾选 如果地形没有勾选上编辑图层&#xff0c;那么就会导致湖、河等水景象无法融入地形。 如果忘记勾选…...

【280个shell脚本】----提示运维工作效率

1.MySQL 数据库备份单循环 #!/bin/bash DATE$(date %F_%H-%M-%S) HOSTlocalhost USERbackup PASS123.com BACKUP_DIR/data/db_backup DB_LIST$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v "Database|information_schema…...

从零开始搭建Electron项目之运行例程

最好的学习方式就是&#xff1a;给一段能够运行的代码示例。 本文给出了例程资源&#xff0c;以及运行的步骤。 在国内开发electron有一点特别不好&#xff0c;就是如果不爬梯子&#xff0c;下载依赖容易出错。 一、例程资源 到如下路径下载例程到本地。 GitCode - 全球开发者…...

MySQL逻辑备份

目录 一.mysqldump 基本命令&#xff1a; 参数选项&#xff1a; 示例 备份整个数据库 备份多个数据库 备份所有数据库 仅备份数据库结构 仅备份特定表 添加选项以有效处理锁表问题 恢复数据 恢复数据库 恢复库中的表 使用source恢复 注意事项 二. mysqlpu…...

python 获取网页链接图片

python 获取 网页图片 在Python中&#xff0c;可以使用requests库获取网页内容&#xff0c;再使用BeautifulSoup解析网页&#xff0c;提取图片链接&#xff0c;最后保存图片到本地。以下是一个简单的例子&#xff1a; import requests from bs4 import BeautifulSoup import o…...

Leetcode 力扣114. 二叉树展开为链表 (抖音号:708231408)

给你二叉树的根结点 root &#xff0c;请你将它展开为一个单链表&#xff1a; 展开后的单链表应该同样使用 TreeNode &#xff0c;其中 right 子指针指向链表中下一个结点&#xff0c;而左子指针始终为 null 。展开后的单链表应该与二叉树 先序遍历 顺序相同。 示例 1&#xf…...

文刻ai工具跟绘唐AI工具有什么区别

文刻AI工具和绘唐AI工具是两种不同的人工智能工具。点击查看 文刻AI工具是一种自然语言处理工具&#xff0c;可以用于生成、修改和校对文本。它可以帮助用户更高效地写作&#xff0c;提供词汇和语法建议&#xff0c;检查拼写和语法错误&#xff0c;并提供自动补全和自动纠正功…...

手写kNN算法的实现-用欧几里德空间来度量距离

kNN的算法思路&#xff1a;找K个离预测点最近的点&#xff0c;然后让它们进行投票决定预测点的类型。 step 1: kNN存储样本点的特征数据和标签数据step 2: 计算预测点到所有样本点的距离&#xff0c;关于这个距离&#xff0c;我们用欧几里德距离来度量&#xff08;其实还有很多…...

IGraph使用实例——线性代数计算(blas)

1 概述 在图论中&#xff0c;BLAS&#xff08;Basic Linear Algebra Subprograms&#xff09;并不直接应用于图论的计算&#xff0c;而是作为一套线性代数计算中通用的基本运算操作函数集合&#xff0c;用于进行向量和矩阵的基本运算。然而&#xff0c;这些基本运算在图论的相…...

【MySQL】(基础篇五) —— 排序检索数据

排序检索数据 本章将讲授如何使用SELECT语句的ORDER BY子句&#xff0c;根据需要排序检索出的数据。 排序数据 还是使用上一节中的例子,查询employees表中的last_name字段 SELECT last_name FROM employees;输出结果&#xff1a; 发现其输出并没有特定的顺序。其实&#xf…...

C++ C_style string overview and basic Input funcitons

write in advance 最近在做题&#xff0c;遇到一个简单的将console的输入输出到文件中的简单题目&#xff0c;没有写出来。悔恨当初没有踏实地总结string 相关的 I/O 以及与文件的操作。这篇文章旨在记录基础的字符I/O, 简单常用的文件I/O操作函数。 当然&#xff0c;你会说C…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院挂号小程序

一、开发准备 ​​环境搭建​​&#xff1a; 安装DevEco Studio 3.0或更高版本配置HarmonyOS SDK申请开发者账号 ​​项目创建​​&#xff1a; File > New > Create Project > Application (选择"Empty Ability") 二、核心功能实现 1. 医院科室展示 /…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

【HTTP三个基础问题】

面试官您好&#xff01;HTTP是超文本传输协议&#xff0c;是互联网上客户端和服务器之间传输超文本数据&#xff08;比如文字、图片、音频、视频等&#xff09;的核心协议&#xff0c;当前互联网应用最广泛的版本是HTTP1.1&#xff0c;它基于经典的C/S模型&#xff0c;也就是客…...

保姆级教程:在无网络无显卡的Windows电脑的vscode本地部署deepseek

文章目录 1 前言2 部署流程2.1 准备工作2.2 Ollama2.2.1 使用有网络的电脑下载Ollama2.2.2 安装Ollama&#xff08;有网络的电脑&#xff09;2.2.3 安装Ollama&#xff08;无网络的电脑&#xff09;2.2.4 安装验证2.2.5 修改大模型安装位置2.2.6 下载Deepseek模型 2.3 将deepse…...

LangChain知识库管理后端接口:数据库操作详解—— 构建本地知识库系统的基础《二》

这段 Python 代码是一个完整的 知识库数据库操作模块&#xff0c;用于对本地知识库系统中的知识库进行增删改查&#xff08;CRUD&#xff09;操作。它基于 SQLAlchemy ORM 框架 和一个自定义的装饰器 with_session 实现数据库会话管理。 &#x1f4d8; 一、整体功能概述 该模块…...

08. C#入门系列【类的基本概念】:开启编程世界的奇妙冒险

C#入门系列【类的基本概念】&#xff1a;开启编程世界的奇妙冒险 嘿&#xff0c;各位编程小白探险家&#xff01;欢迎来到 C# 的奇幻大陆&#xff01;今天咱们要深入探索这片大陆上至关重要的 “建筑”—— 类&#xff01;别害怕&#xff0c;跟着我&#xff0c;保准让你轻松搞…...

作为测试我们应该关注redis哪些方面

1、功能测试 数据结构操作&#xff1a;验证字符串、列表、哈希、集合和有序的基本操作是否正确 持久化&#xff1a;测试aof和aof持久化机制&#xff0c;确保数据在开启后正确恢复。 事务&#xff1a;检查事务的原子性和回滚机制。 发布订阅&#xff1a;确保消息正确传递。 2、性…...

学习一下用鸿蒙​​DevEco Studio HarmonyOS5实现百度地图

在鸿蒙&#xff08;HarmonyOS5&#xff09;中集成百度地图&#xff0c;可以通过以下步骤和技术方案实现。结合鸿蒙的分布式能力和百度地图的API&#xff0c;可以构建跨设备的定位、导航和地图展示功能。 ​​1. 鸿蒙环境准备​​ ​​开发工具​​&#xff1a;下载安装 ​​De…...

MySQL的pymysql操作

本章是MySQL的最后一章&#xff0c;MySQL到此完结&#xff0c;下一站Hadoop&#xff01;&#xff01;&#xff01; 这章很简单&#xff0c;完整代码在最后&#xff0c;详细讲解之前python课程里面也有&#xff0c;感兴趣的可以往前找一下 一、查询操作 我们需要打开pycharm …...

C++_哈希表

本篇文章是对C学习的哈希表部分的学习分享 相信一定会对你有所帮助~ 那咱们废话不多说&#xff0c;直接开始吧&#xff01; 一、基础概念 1. 哈希核心思想&#xff1a; 哈希函数的作用&#xff1a;通过此函数建立一个Key与存储位置之间的映射关系。理想目标&#xff1a;实现…...