目录
- 一、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软件比
Subversion
、CVS
、Perforce
和ClearCase
等SCM(Software Configuration Management软件配置管理)工具具有性价比更高的本地分支、方便的暂存区域和多个工作流等功能。
(4)广泛的应用
- Git 已经成为了业界标准的版本控制系统之一,许多知名的开源项目和企业都在使用 Git 进行版本控制和团队协作。
(5)强大的社区和生态系统
- Git 是一个开源项目,拥有庞大的社区和活跃的开发者社群。
- 这意味着你可以轻松地找到大量的教程、文档和插件来帮助你学习和使用 Git,同时也能够从社区中获得支持和解决问题。
二、Git的安装
软件安装
下载地址:https://git-scm.com/downloads
验证是否安装成功
选择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/