Git的数据管理机制

为了理解Git如何进行版本控制,我们将逐步确认在执行add和commit命令时存储库内部发生的事情。

目录

在执行add命令时的行为
在执行commit命令时的行为
总结

在执行add命令时的行为

执行git add命令时,首先会在存储库中保存指定为add的文件的压缩文件1(图①)。
压缩文件被称为blob对象。
然后,文件名3会通过哈希函数SHA12添加到该压缩文件上。

接下来,在舞台区域的索引4中,记录压缩文件和其原文件的映射信息(见图2)。

– 总体图

behavior_of_add.png

在执行 commit 命令时的行为

执行git commit命令时,首先会在仓库中创建一个tree对象(图③)。这个对象由哈希函数生成一个名称。其内容是复制的索引。

接下来,将在代码库中创建一个提交对象(图④)。
它的名称是由哈希函数生成的。
内容包括以下几点:
・树对象的文件名
・父提交信息
・提交者姓名和地址
・提交时间
・提交消息

• 总览图

behavior_of_add_and_commit.png

总结

在Git中执行提交操作后,
将在存储库中生成以下三个对象。

blob对象以压缩文件的形式保存已提交的数据本体,tree对象以文件系统的方式管理文件(目录)结构,commit对象则管理提交信息。

通过这些来,Git进行版本控制。

使用zlib库 ↩对文件内容附加标头的字符串进行加密 ↩

由40个英数字组成 ↩

索引的本质是文件,保存在.git/index中 ↩

保存在./git/object中 ↩

广告
将在 10 秒后关闭
bannerAds