Git基本原理简介

203 阅读2分钟

1 哈希

哈希是一个系列的加密算法,各个不同的哈希算法虽然加密强度不同,但是有以下几个共同点:

1)不管输入数据的数据量多大,用同一个哈希算法来加密时,得到的加密结果长度固定

2)当哈希算法确定了,要被加密的数据也确定时,输出数据能够保证不变(不区分大小写)

3)当哈希算法确定了,但输入数据有一定变化时,输出数据一定有变化,而且通常变化很大

4)哈希算法不可逆

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

哈希算法可以被用来验证文件是否有损坏或者丢失。

2 Git版本数据管理机制

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

第一次提交会保存文件的完整信息,但之后每次版本的提交都只是保存新添加和被修改的内容,而不会大量的保存重复的内容,而当我们需要某一历史版本时,系统会将其完整的所有信息拼凑起来,是以这种方式来管理文件的

2.2Git的文件管理机制

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

2.3Git文件管理机制的细节

Git的提交对象:会有一个哈希值

​ commit size

​ tree 92ec2

​ author Tom

​ committer Tom (the initial commit of my project)

提交对象会和其父对象形成一个链条

3 Git分支管理机制

本质:创建和移动指针

3.1分支的创建

是让分支指向当前版本,而非复制一份

image.png

3.2分支的切换

就是移动HEAD指针,指向testing这个分支,此时再提交版本就是在这个分支上推进一个新的版本,而master这个分支版本不会有推进

image.png

image.png 之后如果想在master这个分支上推进版本,就先移动HEAD指针指向master,就到了master这个分支上了之后在推进版本,就有很明显的分支结构了

参考链接

www.bilibili.com/video/BV1pW…