git学习日志-git剖析

2020-05-29  本文已影响0人  Levi_moon

虽然git用起来和其他的版本控制系统类似,但是它在对数据的存储和基本工作原理上与其他版本控制系统有很大的差异。

理解这些差异可以帮助我们更好的理解与使用git,可以避免很多在使用时的困惑。

为了更好的理解git,就需要对git的特点有所了解,那么接下来就对git的特点进行剖析。

1.git特点剖析

git的特点大致总结起来的话,有以下几点:

git特点剖析.png

(1)记录快照,而不是存储差异数据

大部分版本控制系统是以文件变更列表的方式存储信息,它们存储的信息由一组原文件和每个文件随时间逐步累积的差异组成。

version_1 version_2 version_3 version_4 version_5 ...
文件A 差异1 差异2 差异3 ...
文件B 差异1 差异2 ...
文件C 差异1 差异2 ...
文件D 差异1 差异2 差异3 差异4 ...
文件E 差异1 ...

因此,此类版本控制系统也被称为基于差异的版本控制系统。

而git不是采用上述的方式保存数据,相反,git会把数据看作是对小型文件系统的一系列快照。

version_1 version_2 version_3 version_4 version_5 ...
文件A A1 A2 A2 A3 ...
文件B B B1 B1 B1 ...
文件C C1 C1 C1 C2 ...
文件D D D D D1 ...
文件E E E E E E

在git中,每当开发者保存或提交修改时,git都会为当前的全部文件创建一个快照,并保存这个快照的索引。如果文件没有修改,那么git不会重新存储该文件,而是只保留一个链接指向之前存储的文件。

换句话说,git对待数据更像是对待一个快照流。

(2)操作本地化,没有网络延时困扰

由于git在本地有仓库,因此git的操作都是对本地文件的操作,一般不需要连接网络,获取其它计算机的信息。因此,这会让git看起来比其它版本管理系统操作更迅速。

(3)检验文件的完整性,杜绝文件内容或目录内容被篡改

git中所有的数据在存储前都会计算校验和,这是构建在git底层的,是构成git的重要一环。

git通过SHA-1散列机制,对文件内容或目录结构计算出由40个十六进制字符组成的字符串,这些字符串充当文件或目录的索引存储在git数据库中。

(4)一般只添加数据,数据丢失可能性小

我们执行的git操作,基本上都是往git数据库中添加数据。如果我们还定期往其他仓库推送数据,那么就很难丢失数据。


2.git的三种状态及三个阶段

在git中,有三种状态经常被提及,那就是:已提交(committed)、已修改(modified)、已暂存(staged)

此刻,对于git的三种状态,我们或许理解的还不够透彻,不过不要紧,随着我们对git的深入剖析,等下我们就会清楚的知道这三个状态的真实含义是什么。

由git的三种状态会引出git的三个阶段,那就是:工作区(working directory)、暂存区(staging area)、git仓库(.git directory或Repository)

git的三个阶段我们现在清楚了,那么这三个阶段之间的工作流程就组成了git的工作原理。

git三个阶段.png
  1. 在工作区修改文件;
  2. 将打算下次提交的更改选择性的添加到暂存区;
  3. 提交更新,找到暂存区的文件,将快照永久性存储到git仓库中。
git的三个状态及三个阶段.png

了解了git的工作原理,那么也就清楚git的三个状态是什么了。

上一篇 下一篇

猜你喜欢

热点阅读