Git的数据管理机制
为了理解Git如何进行版本控制,我们将逐步确认在执行add和commit命令时存储库内部发生的事情。
目录
在执行add命令时的行为
在执行commit命令时的行为
总结
在执行add命令时的行为
执行git add命令时,首先会在存储库中保存指定为add的文件的压缩文件1(图①)。
压缩文件被称为blob对象。
然后,文件名3会通过哈希函数SHA12添加到该压缩文件上。
接下来,在舞台区域的索引4中,记录压缩文件和其原文件的映射信息(见图2)。
– 总体图

在执行 commit 命令时的行为
执行git commit命令时,首先会在仓库中创建一个tree对象(图③)。这个对象由哈希函数生成一个名称。其内容是复制的索引。
接下来,将在代码库中创建一个提交对象(图④)。
它的名称是由哈希函数生成的。
内容包括以下几点:
・树对象的文件名
・父提交信息
・提交者姓名和地址
・提交时间
・提交消息
• 总览图

总结
在Git中执行提交操作后,
将在存储库中生成以下三个对象。
blob对象以压缩文件的形式保存已提交的数据本体,tree对象以文件系统的方式管理文件(目录)结构,commit对象则管理提交信息。
通过这些来,Git进行版本控制。
由40个英数字组成 ↩
索引的本质是文件,保存在.git/index中 ↩
保存在./git/object中 ↩