哈希
哈希是一个系列的加密算法, 各个不同的哈希算法虽然加密强度不同, 但是有以下
几个共同点:
①不管输入数据的数据量有多大,输入同一个哈希算法,得到的加密结果长度固定。
②哈希算法确定, 输入数据确定, 输出数据能够保证不变
③哈希算法确定, 输入数据有变化, 输出数据一定有变化, 而且通常变化很大
④哈希算法不可逆
Git 底层采用的是 SHA-1 算法
哈希算法可以被用来验证文件。
Git 就是靠这种机制来从根本上保证数据完整性的。
Git 保存版本的机制
集中式版本控制工具的文件管理机制
以文件变更列表的方式存储信息。这类系统将它们保存的信息看作是一组基本
文件和每个文件随时间逐步累积的差异 。
Git 的文件管理机制
Git 把数据看作是小型文件系统的一组快照。 每次提交更新时 Git 都会对当前
的全部文件制作一个快照并保存这个快照的索引。 为了高效, 如果文件没有修改,
Git 不再重新存储该文件, 而是只保留一个链接指向之前存储的文件。 所以 Git 的
工作方式可以称之为快照流。
Git 文件管理机制细节
Git的提交对象
我们add
的每一个文件都会被加密后得到一个哈希值,然后放到树中,树中有提交的每个文件的哈希值,同时这个树也会有一个哈希值,提交后会把这个树的哈希值、提交的数量、提交者、作者等这一些信息加密后又得到一个哈希值,这也就是我们的一个版本信息。
提交对象及其父对象形成的链条
第一次提交后没有父对象,第二次提交后把第一次提交的代码作为父对象,第三次提交把第二次提交的代码作为父对象,Git正是这样实现的版本控制。
Git 分支管理机制
分支的创建
创建分支只需要把指针指向某一部分代码,HEAD
指向主分支,代表当前在主分支操作。
分支的切换
当想在testing
分支上继续操作时,只需要把HEAD指针指向testing
分支即可。
在testing上继续开发,这样testing分支就比主分支多了一部分代码
想要切换回主分支只需要把指针直接指向主分支即可
也可以两边同时进行开发