第一篇 Git前置知识

152 阅读4分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情 什么是版本控制系统

版本控制系统是一个记录一个或若干个文件内容的变化,以便之后来查看之前特定版本的修改情况的系统。

而版本控制系统可以将选定的文件或是整个项目回退到过去某个版本,还可以比较文件的变化细节,查出最后是谁修改了哪个地方,从而找出BUG出现的原因以此针对性地修复等等。

版本控制系统的类别

本地版本控制系统

特点

将各种版本的项目存储在用户本地,大多是采用某种简单数据库来记录文件每次更新的细节。

有的本地版本控制系统是通过记录每次修改的细节【补丁集】,通过细节反推出各个版本的具体内容的。

本地版本控制图解

缺陷

只适合一个人工作时使用,多个人远程协作构建一个项目时,无法起到很好的作用。

而且磁盘损坏后,将会损失所有数据

集中化的版本控制系统【标准的版本控制系统】

特点

拥有一个单一的用于集中管理的服务器,里面存储了所有文件的各种版本,协同工作的人都是通过客户端连接到该服务器,并进行版本更迭、回退等的版本操作。

缺点

当这个服务器宕机之后,谁也没法进行版本操作,若是服务器磁盘损坏,那没有备份的话,将会丢失所有版本的信息数据。

分布式版本控制系统

特点

修正了上面的所有版本控制系统的缺点,是现在的主流。

在用户进行项目的克隆时,客户端不仅仅提取最新版本的文件快照,还会将整个代码仓库完整镜像【包括历史记录】到用户的电脑上,那么就有多处备份,这样如果任何一处服务器损伤,都可以用本地的镜像来进行恢复。

分布式版本控制图解

许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。

Git的特点

对待数据的方式【与其他版本控制系统的差异】

大部分的版本控制系统都仅仅存储版本之间的差异,以文件变更列表【如下图】的形式存储信息,是基于差异的版本控制系统。

存储每个文件与初始版本的差异。

而Git虽然也是以文件变更列表进行数据的存储,但他是在每次更新或保存项目状态时,他都会给所有的文件创建一个快照,并存储这个索引。

为了效率若是某个文件没有修改,Git不在重新存储这个文件,而是保留一个指向之前版本中该文件的链接。

Git 存储项目随时间改变的快照。

多数操作都是本地操作

在 Git 中的绝大多数操作都只需要访问本地文件和资源,一般不需要来自网络上其它计算机的信息。

Git保证数据的完整性

所有的数据在存储前都计算校验和,然后会校验和引用。所以不可能你改了文件后Git不知情。

Git 用以计算校验和的机制叫做 SHA-1 哈希

这是一个基于 Git 中文件的内容和目录结构计算出来,由 40 个十六进制字符组成的字符串。

而Git 数据库中保存的信息都是以文件内容的哈希值来索引,而不是文件名。

Git一般只添加数据不删除数据

 Git 操作,几乎只往 Git 数据库中 添加 数据,甚少从数据库中删除数据。

所以Git基本不会执行导致文件不可恢复的操作。

句末语

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 1 天,点击查看活动详情