Git基本原理

旧巷老猫 提交于 2019-11-29 23:18:18

哈希

哈希是一个系列的加密算法, 各个不同的哈希算法虽然加密强度不同, 但是有以下
几个共同点:
①不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
②哈希算法确定, 输入数据确定, 输出数据能够保证不变
③哈希算法确定, 输入数据有变化, 输出数据一定有变化, 而且通常变化很大
④哈希算法不可逆

Git 底层采用的是 SHA-1 算法

哈希算法可以被用来验证文件。

Git 就是靠这种机制来从根本上保证数据完整性的。

Git 保存版本的机制

集中式版本控制工具的文件管理机制

以文件变更列表的方式存储信息。这类系统将它们保存的信息看作是一组基本
文件和每个文件随时间逐步累积的差异 。

Git 的文件管理机制

Git 把数据看作是小型文件系统的一组快照。 每次提交更新时 Git 都会对当前
的全部文件制作一个快照并保存这个快照的索引。 为了高效, 如果文件没有修改,
Git 不再重新存储该文件, 而是只保留一个链接指向之前存储的文件。 所以 Git 的
工作方式可以称之为快照流。

Git 文件管理机制细节

Git的提交对象

我们add的每一个文件都会被加密后得到一个哈希值,然后放到树中,树中有提交的每个文件的哈希值,同时这个树也会有一个哈希值,提交后会把这个树的哈希值、提交的数量、提交者、作者等这一些信息加密后又得到一个哈希值,这也就是我们的一个版本信息。

提交对象及其父对象形成的链条

第一次提交后没有父对象,第二次提交后把第一次提交的代码作为父对象,第三次提交把第二次提交的代码作为父对象,Git正是这样实现的版本控制。

Git 分支管理机制

分支的创建

创建分支只需要把指针指向某一部分代码,HEAD指向主分支,代表当前在主分支操作。

分支的切换

当想在testing分支上继续操作时,只需要把HEAD指针指向testing分支即可。

在testing上继续开发,这样testing分支就比主分支多了一部分代码

想要切换回主分支只需要把指针直接指向主分支即可

也可以两边同时进行开发

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!