提交对象
暂存操作( add )会为每一个文件使用 SHA-1 哈希算法计算校验和,然后会把当前版本的文件快照保存到 Git 仓库中(Git 使用 blob 对象来保存它们),最终将校验和加入到暂存区域等待提交。右上角的 5b1d3 就是校验和的一部分。
当进行提交操作(commit)时,Git 会先计算每一个子目录(本例中只有项目根目录)的校验和,然后在 Git 仓库中这些校验和保存为树对象。 随后,Git 便会创建一个提交对象,它除了包含上面提到的那些信息外,还包含指向这个树对象(项目根目录)的指针。如此一来,Git 就可以在需要的时候重现此次保存的快照。
Blob 对象保存着文件快照、树对象记录着目录结构和 blob 对象索引,提交对象包含着指向前述树对象的指针和所有提交信息。上图中因为是首次提交,索引提交对象中没有 parent 指针。
可以从上图发现,非首次提交的提交对象都会有一个 parent 指针。