Git使用index update-index命令保存添加的所有文件版本?

时间:2015-07-29 17:02:05

标签: git git-plumbing

我尝试理解git的plumbings命令以及它的低级操作如何构建添加和提交等高级操作。

我知道,每次我使用:

git update-index file.txt

我从这个文件创建blob并在索引中创建引用(文件名和SHA1键一起写)(当然只有在文件被更改时)。 如果我进行提交,我创建的树只指向一个blob(我只更改了一个文件)。

但是在.git / objects数据库中存储的不是一个,而是由这个文件中的update-index命令创建的更多(例如五个或六个)blob,这些blob没有被任何指向的树指向通过任何提交对象。 git应该只保存这个blob,它们位于commit提交的快照中。

Git有一些自动垃圾收集,可以在将来删除未指向的blob吗?命令update-index是add命令的完全等价物吗?

1 个答案:

答案 0 :(得分:0)

Git有一个垃圾收集过程,它会以一定的间隔由其他命令(例如提交和拉取)自动调用,或者可以通过运行git gc手动调用,这将除其他外,清理对象数据库,删除未被另一个对象引用的对象或分支/标记指针。

git命令update-index是瓷器git add命令下面的管道。

这个两步过程还允许提交创建过程更快,因为git在创建提交时不必对文件进行哈希处理,因为当您将它们添加到索引时它们被散列并保存。