什么是 git-cache 以及 git-cache 中存储了什么

Ali*_*abi 6 git

事实上,我读了很多关于 git 的东西。

我知道我可以通过命令删除缓存,但我无法理解git-cachegit rm --cached .的概念。

什么是缓存?而GIT中的缓存位置又在哪里呢?该缓存是存储在 RAM 中还是文件中?git 中使用缓存来提高性能吗?

缓存中存储了什么?

tor*_*rek 11

Git 是一个相当古老(15 年以上)的程序,有很多部分和一些内部术语,但并非所有这些都已经过时了。表达式the cache以及标志的拼写 as--cached就是其中之一。该实体最现代的术语是暂存区,它反映了您如何使用它,但Git 中该实体最常见的术语是索引。

因此,一般来说,如果某人或某物提到索引、暂存区域或缓存,它们可能意味着相同的事情:

git 的缓存位置在哪里?

用于git rev-parse --git-dir查找 Git 目录。在 Git 目录中,查找名为index. 但在执行此操作之前,请检查环境变量$GIT_INDEX_FILE:如果已设置,请尝试使用该路径名。

在 shell 中,1然后,它在文件中:

ls -l ${GIT_INDEX_FILE-$(git rev-parse --git-dir)/index}
Run Code Online (Sandbox Code Playgroud)

该文件可能存在也可能不存在;如果不存在,则此时没有索引,缓存为空。


1这假定/bin/sh或兼容语法;有些 shell 有不同的结构。


该缓存是存储在 RAM 中还是文件中?

正如我们刚才看到的,它在一个文件中。然而,Git会读取此文件,然后将其存储在 RAM 中(以内存中最有用的任何格式,这通常与其在磁盘上的外观不同)。文件本身也可能包含指示 Git 部分读取其他文件的指令。

git 中使用缓存来提高性能吗?

是的:作为缓存,其目的是提高性能。然而,索引的作用不仅仅是“作为提高性能的缓存”。它的主要作用是作为“集结区”,因此得名集结区。它还具有解决冲突合并的主要功能,对此只有通用术语索引才有用。(即使如此,索引这个词也没有传达任何真实信息。从某种意义上说,这实际上是一件好事,因为文件的内容可能会在 Git 的未来版本中发生变化。)

我知道我可以通过git rm --cached .命令删除缓存

这不会删除缓存本身。它从缓存中删除条目(即使这样,它们也只能在内部被标记为“已删除”,并且还有磁盘上的扩展来保留一些条目,以便在需要时复活)。

什么是缓存?

作为计算领域的通用术语,它非常通用。

缓存中存储了什么?

Git 源代码包含一份包含详细信息的技术文档。git ls-files --stage您可以使用和来查看它的实际效果git ls-files --debug。