我试图理解 git 的管道命令以及它的低级操作如何构建高级操作,如添加和提交。
我知道,每次我使用:
git update-index file.txt
我从这个文件创建 blob 并在索引中创建引用(文件名和 SHA1 密钥一起写)(当然只有在文件被更改的情况下)。如果我提交,我会创建只指向一个 blob 的树(我只更改了一个文件)。
但是在 .git/objects 数据库中存储的不是一个,而是更多(例如五个或六个)由 update-index 命令从这个文件创建的 blob,它们不是由任何 commit object 指向的任何树所指向的。git 应该只保存这个 blob,它们位于提交创建的快照中。
Git 有一些自动垃圾回收,以后可以去掉不指向的 blob?命令 update-index 是 add 命令的完全等价物吗?