初始化时,对象库中为空  创建一个 t1.txt 文件,在第一行输入 123456进行 git add操作后在 46 目录下发现新增的 blob 对象,所谓的 SHA 算法也就是 Git 对象中的对象 ID,拆分成“2 位文件目录名+38 位对象名”用于快速查找 Git 中的文件   查看 t1.txt 在 Index 树下如何存储,在 Git 中可以看到其内容:git write-tree是使用当前索引 Index 创建树对象,同时会创建一个树目录,也就是 aa,我们可以忽略它  如果将 t1.txt 文件内容修改,增加一行 123456 并操作 git add,查看当前对象库:  发现创建了一个新的目录,再查看其内部文件:  实际上 t1.txt 的内容修改,Git 会再创建一个新 blob 对象存放整个内容,而不是在原 blob 对象下增量存储  修改 t1.txt 为 t2.txt,再次 git add,新增了 8c 目录和里面的文件实际上 Git 并没有在对象库中删除之前的 t1.txt,创建了一个新对象,新对象里面的内容指向原来的 t1.txt:  最后再将 t2.txt 修改为 t1.txt 并操作 git add 查看 Index 文件修改时间,我们得知 Index 树变化了,但是其他文件目录没有发生变化:  查看当前的 Index 索引树,发现最后结果还是指向了和上面相同的那个 t1.txt 文件: 