文章目录
- 一、前言
- 二、git 是什么
- 三、版本控制系统是什么
- 四、本地 vs 集中式 vs 分布式
- 本地版本控制系统
- 集中式版本控制系统
- 分布式版本控制系统
- 五、安装 git
一、前言
本系列上一篇文章【Git】git 从入门到实战系列(一)—— Git 的诞生,Linus 如何在 14 天内编写出 Git?我们讲述了 git 诞生的过程。此篇我们对 git 的特点进行总结,以及总结 git 的安装方法。
该系列浅显易懂,有理论,有实例,实用性超强,读者可以边学边练,不枯燥,易上手,读完该系列你可以通过 git 轻松地完成你的工作。该系列不会让你成为git专家,但用于工作已绰绰有余。
二、git 是什么
git 是一个免费、开源的分布式版本控制系统。用于跟踪文件的修改,特别是在软件开发中,已经成为现代软件开发中最流行的版本控制系统之一。在许多情况下,尤其是在团队协作、开源项目和企业开发中,git 几乎是标准选择。
三、版本控制系统是什么
git 是一个分布式版本控制系统,那什么是版本控制系统?版本控制系统是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统。版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制。常见的版本控制系统有:cvs、svn、git。
纵观版本控制系统的发展历史,《Version Control By Example》一书的作者 Eric Sink 在他的书中对版本控制进行了分类,广义上讲,版本控制工具的历史可以分为三代:第一代为本地版本控制系统,第二代为集中式版本控制系统,第三代为分布式版本控制系统。
四、本地 vs 集中式 vs 分布式
本地版本控制系统
第一代版本控制系统被称为本地版本控制系统。通过加锁将并发执行转换成顺序执行。 一次只能有一个人处理文件。如果多人开发,每个人都在不同的系统和电脑上开发,没办法协同工作。
具体流程如下:首先,应该把文件放在一个服务器上,方便使用者上传或下载文件;其次,任何人想对文件修改时,需要先把这个文件加锁,通过checkout指令,使得其他人无法修改;最后,当修改完成之后,需要释放锁,通过checkin指令,形成一个新的版本,存放到服务器端。
第一代版本控制系统主要有 RCS、SCCS(1972年发布)和 DSEE(被认为是 Atria ClearCase 的前身)。目前,有些项目还在使用!
集中式版本控制系统
第二代版本控制系统被称为集中式版本控制系统(Centralized Version Control Systems,CVCS),其对同步修改更加宽容,可以让在不同系统上的开发者协同工作,所有的用户电脑都是从中央服务器获取代码或者是将本地的代码提交到中央服务器。
集中式管理系统的特点:版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器。本地是没有版本库的修改记录的,所以集中式版本控制系统最大的毛病就是必须联网才能工作,如果在局域网内还好,带宽够大,速度够快,可如果在互联网上,遇到网速慢的话,可能提交一个10M的文件就需要5分钟。
集中式版本控制系统的缺点也是显而易见的,最显而易见的缺点是中央服务器的单点故障。 如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。本地版本控制系统也存在类似问题,只要整个项目的历史记录被保存在单一位置,就有丢失所有历史更新记录的风险。
第二代版本控制系统主要有 CVS、SourceSafe、Subversion、Team Foundation Server、SVN。
分布式版本控制系统
第三代版本控制系统被称为分布式式版本控制系统(Distributed Version Control Systems,DVCS),其允许合并和提交分开。在每个使用者电脑上就有一个完整的数据仓库,没有网络依然可以使用。在这类系统中,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是对代码仓库的完整备份。
分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库,这样,你工作的时候,就不需要联网了,因为版本库就在你自己的电脑上。既然每个人电脑上都有一个完整的版本库,那多个人如何协作呢?比方说你在自己电脑上改了文件A,你的同事也在他的电脑上改了文件A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。
既然是多人协作,我们肯定是需要指定一个人的电脑作为总仓库,用来同步各开发者的私有仓库,所有人从总仓库上提交更新,拉取别人的提交,这样才能保证总仓库保留了所有人的改动。 这个总仓库其实就充当了公共服务器仓库的角色。
所以我们通常说的分布式管理系统的服务器其实就是找一台电脑充当公共服务器的角色,每天24小时开机,其他每个人都从这个服务器仓库克隆一份到自己的电脑上,并且各自把各自的提交推送到服务器仓库里,也从服务器仓库中拉取别人的提交。在分布式版本控制系统中,每个参与者的本地也会有一个完整的仓库。即使服务器端崩溃,我们仍然可以使用 git(仅在本地仓库管理我们的代码),在网络具备时,再和服务器进行同步即可!
第三代版本控制系统主要有 Bazaar、Git、Mercurial、BitKeeper、Monotone。且第三代版本控制系统已经大有一同江湖的趋势。
五、安装 git
ubuntu上安装git
你可以试着输入 git,看看系统有没有安装 git。
像上面的命令,系统会提示你Git没有安装,还会提示你如何安装Git。
一般按照以下步骤安装 git
【1】、更新软件包列表
在安装之前,首先更新你本地的包列表,确保你能获取到最新的软件版本。
sudo apt update
【2】、安装 git
使用下面的命令安装 git:
sudo apt install git
【3】、验证 git 安装
安装完成后,你可以通过以下命令检查 git 是否安装成功,以及查看安装的版本:
git --version
这将显示 git 的版本号,比如 git version 2.17.1
【4】、配置 Git
在使用 git 之前,建议配置用户信息,这样在你提交代码时能够正确地记录作者信息。执行以下命令来设置你的姓名和邮箱:
git config --global user.name "Your Name"
git config --global user.email "your_email@example.com"
【5】、验证配置
通过以下命令可以查看你的 git 配置是否已成功设置:
git config --list
到此,你已在 ubuntu 上成功安装并配置了 git。你可以开始创建git仓库、克隆代码、提交更改以及进行其他版本控制操作。今天总结到此,下一篇总结创建版本库等内容。