分布式版本控制工具软件——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/

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

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

相关文章

CentOs7 JDK21 安装

CentOs7 JDK21 安装 准备工作 先检查系统是否之前已经安装了jdk 。如果已经安装的话需要卸载。 方式一:使用压缩包的方式 下载jdk21的压缩包 https://www.oracle.com/java/technologies/downloads/ 将下载的gz压缩包上传到服务器并解压 # 创建文件夹 (你可以自…

在npm发布自己的组件包

目录 前言 正文 npm和git的对比 Node环境的配置 具体发布步骤 ※※需要注意的是 尾声 🔭 Hi,I’m Pleasure1234🌱 I’m currently learning Vue.js,SpringBoot,Computer Security and so on.👯 I’m studying in University of Nottingham Ni…

Allegro X PCB设计小诀窍系列--如何在Allegro X中快速将位号调整到器件中心

背景介绍:我们在进行PCB设计时,为了将位号和元器件对应,从而能够更快速准确的辨别元器件位置,通常需要将位号移动至器件中心。如果由工程师手动完成,不仅工作量大,还极易出错。而通过Allegro X PCB设计工具…

基于简单Agent对医疗数据进行分析

数据表 供应商资格审核规定.pdf 医生名录.xlsx 历史就诊记录.xlsx 患者信息名录.xlsx 药品.xlsx 药品库存管理.xlsx 采购单位基本信息.xlsx Agent测试 模型基于ChatGPT-3.5 问题:帮我找出不达标的供应商 Agent分析过程 [Thought: 0] Key Concepts: - 不达标的供…

SQL Server数据库xp_cmdshell提权笔记

文章目录 一、简介二、搭建环境三、利用条件1、查询 xp_cmdshell 是否开启,返回为1则证明存在2、判断权限是不是sa,回是1说明是sa3、开启xp_cmdshell4、关闭xp_cmdshell 四、获取数据库权限1、成功获取sqlserver,进行登陆2、开启xp_cmdshell权…

进口电动流量调节阀的选型-美国品牌

进口电动流量调节阀的选型需要综合考虑多个因素,以确保所选阀门能够满足实际应用需求。以下是选型时需要考虑的主要方面: 一、明确应用需求 工作介质:了解介质的性质,包括流体类型、温度、压力以及是否具有腐蚀性或特殊性质。流…

C语言野指针、规避野指针、assert宏断言

目录 a.野指针成因 1.指针未初始化 2.指针越界访问 3.指针指向的空间释放 b.规避野指针 1.指针初始化 2.小心指针越界 3.指针变量不再使用时,及时置NULL,指针使用之前检查有效性 4.避免返回局部变量的地址 c.assert宏断言的使用 概念&#xff1…

LeetCode 两数之和 + 三数之和

两数之和 简单题 思路:一个Map,key是数值,value是该数值对应的下标,遍历的时候判断一下当前数组下标对应的值在map里有没有可组合成target的(具体体现为在map里找target-nums【i】),如果有,直接…

【代码随想录】【算法训练营】【第28天】 [93]复原IP地址 [78]子集 [90]子集II

前言 思路及算法思维,指路 代码随想录。 题目来自 LeetCode。 day 28,工作的周二~ 题目详情 [93] 复原 IP 地址 题目描述 93 复原 IP 地址 解题思路 前提:分割问题 思路:回溯算法,确定每次递归回溯的分割位置…

navi_cat查看数据库的连接密码

Navi_Cat 建立连接,来访问数据库。可惜,忘记了数据库密码,没事,这么搞。 首先先导出链接,再从链接里取出被加密的密码,然后找个可在线运行PHP的网站(代码在线运行 - 在线工具)&…

Vue项目安装axios报错npm error code ERESOLVE npm error ERESOLVE could not resolve解决方法

在Vue项目中安装axios时报错 解决方法:在npm命令后面加--legacy-peer-deps 例如:npm install axios --save --legacy-peer-deps 因为别的需求我把node版本重装到了最新版(不知道是不是这个原因),后来在项目中安装axi…

2024 年该如何利用 MidJourney 创作AI艺术(详细教程)

什么是 Midjourney Midjourney 是根据文本提示创建图像的生成式人工智能的优秀范例。与 Dall-E 和 Stable Diffusion 一样,它已成为最受欢迎的人工智能艺术创作工具之一。与竞争对手不同的是,Midjourney 是自筹资金和封闭源代码的,因此对它的…

BPMN开始事件-Activiti7从入门到专家(7)

开始事件类型 bpmn开始事件表示流程的开始,定义流程如何启动,在某种情况下启动,比如接收事件启动,指定事件启动等,开始事件有5种类型: 空开始事件定时器开始事件信号开始事件消息开始事件错误开始事件 继…

如何以非交互方式将参数传递给交互式脚本

文章目录 问题回答1. 使用 Here Document2. 使用 echo 管道传递3. 使用文件描述符4. 使用 expect 工具 参考 问题 我有一个 Bash 脚本,它使用 read 命令以交互方式读取命令参数,例如 yes/no 选项。是否有一种方法可以在非交互式脚本中调用这个脚本&…

探索未来制造,BFT Robotics引领潮流

“买机器人,上BFT” 在这个快速变化的时代,创新和效率是企业发展的关键。BFT Robotics,作为您值得信赖的合作伙伴,专注于为您提供一站式的机器人采购和自动化解决方案。 产品系列: 协作机器人:安全、灵活、…

水务设备数字化管理

在数字化浪潮席卷全球的今天,水务行业也迎来了数字化转型的重要契机。传统水务管理模式中,设备监控、数据收集、运行维护等环节往往存在效率低下、成本高昂、安全隐患多等问题。而HiWoo Cloud平台的出现,以其强大的设备接入能力、高效的数据处…

使用达梦数据库集成Python,达成快速连接

本章主要介绍在 Python 开发的时候,如何使用 Python 快速连接达梦数据库。 dmPython 简介 dmPython 是 DM 提供的依据 Python DB API version 2.0 中 API 使用规定而开发的数据库访问接口。 使用 Python 连接达梦数据库时需要安装 dmPython。安装完 DM 数据库软件…

Python的df.cumsum()函数

Python Pandas dataframe.cumsum() Python是一种进行数据分析的伟大语言,主要是因为以数据为中心的Python包的奇妙生态系统。Pandas就是这些包中的一个,它使导入和分析数据变得更加容易。 Pandas dataframe.cumsum()用于查找任何axis上的累积和值。每个…

基于51单片机的多功能计算器全套设计

通过本次课题设计,应用《单片机应用基础》、《数据结构》等所学相关知识及查阅资料,完成实用计算器的设计,以达到理论与实践更好的结合、进一步提高综合运用所学知识和设计的能力的目的。 通过本次设计的训练,可以使我在基本思路和基本方法上对基于MCS-51单片机的嵌入式系…

docker命令 docker ps -l (latest)命令在 Docker 中用于列出最近一次创建的容器

文章目录 12345 1 docker ps -l 命令在 Docker 中用于列出最近一次创建的容器。具体来说: docker ps:这个命令用于列出当前正在运行的容器。-l 或 --latest:这个选项告诉 docker ps 命令只显示最近一次创建的容器,不论该容器当前…