程序员java 技术干货技术干货

Git 分布式文件系统 - 为什么 Git 与众不同?

2018-07-08  本文已影响76人  给你添麻烦了

关于版本控制系统

按照时间顺序记录某一系列的文件的变更,使其可以查看以前的特定版本的软件,我们称之为版本控制系统。

简单来讲:创建两个文件夹,在两个文件夹中分别保存一月份与二月份的销售数据,这样就创建了一个简单且稳定的版本控制系统。

常见的版本控制系统

为什么 Git 与众不同?

其他版本控制系统的文件存储设计

Git 与上述版本控制系统最大的不同在于其对待数据的方式。概念上来区分,其它大部分系统以文件变更列表的方式存储信息。 这类系统(CVS、Subversion、Perforce、Bazaar 等等)将它们保存的信息看作是一组基本文件和每个文件随时间逐步累积的差异。

如下图所示:当需要恢复到某个历史版本时,需要从中央服务器上拉去补丁集,并叠加恢复到某一时间段的状态。

image_1chq6i57hc9vu66n8e1s9t1dhsm.png-57.5kBimage_1chq6i57hc9vu66n8e1s9t1dhsm.png-57.5kB

Git 版本控制系统的文件存储设计

Git 不按照以上方式对待或保存数据。 反之,Git 更像是把数据看作是对小型文件系统的一组快照。 每次你提交更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。 为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。 Git 对待数据更像是一个快照流

由于 Git 的快照同步机制,只需要同步一次服务器上的版本数据信息,即可在本地恢复到任何一个版本。另外,无论哪一台客户机的数据发生了丢失,都可以随时同步其他客户机的数据恢复作业,这就是分布式的含义。从本质上来说,Git 不再是一种一个单纯的版本控制系统,而更像是一个微型文件系统。

image_1chs2vjah1ul613llmp91270ru213.png-74.1kBimage_1chs2vjah1ul613llmp91270ru213.png-74.1kB
Git 的完整性校验

在计算机中,哈希算法经常用来做签名校验,以保证内容的完整性,Git 也一样。
在 Git 中所有数据在存储前都计算校验和,然后以校验和来引用。Git 用来计算校验和的机制叫做 SHA-1 散列(hash,哈希)。 基于 Git 中文件的内容或目录结构计算出来。 SHA-1 哈希看起来是这样

24b9da6552252987aa493b52f8696cd6d3b00373

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

结语

简单总结一下本章的内容:


参考书籍
《精通 Git pro 第二版》

若文章有幸帮到了您,您可以捐助我。以鼓励我写出更棒的作品!


alipay.jpg-17.7kBalipay.jpg-17.7kB wechat.jpg-16.7kBwechat.jpg-16.7kB
上一篇 下一篇

猜你喜欢

热点阅读