什么是staging和caching的区别?

10

我正在阅读《Pro Git》第二版这本书。

在第21页上,它写到:

git diff --staged 命令会比较你已经暂存的修改和你上一次提交的版本。

接着,在一页后面(没有解释 "cached" 是什么意思):

git diff --cached 可以查看你到目前为止已经暂存的内容。

此时我有些迷惑了,暂存和缓存之间有什么区别?


1
它们是完全的同义词。--cached--staged 更早;后者是为了与“暂存区”这个术语保持一致而添加的。 - jub0bs
2个回答

5
它们是同义词;来自Git文档
这种形式用于查看相对于指定名称的下一次提交而暂存的更改。通常,您希望与最新的提交进行比较,因此如果未指定,它将默认为HEAD。如果HEAD不存在(例如未出现的分支)并且未给出,则显示所有已暂存的更改。--staged是--cached的同义词。

3
“暂存区”或“缓存区”是Git中同一概念的两个不同名称,在大多数其他情况下,它们有另一个名字:索引。
索引是你使用git add(或git rm)添加更改时进行“暂存”的区域。当你执行git commit时,它将提交这些更改的集合。
尽管“缓存区”很少在git diff--cached参数之外使用,“暂存区”、“缓存区”和“索引”通常可以互换使用。

--cached 参数也适用于 git rmgit diff-index,以及其他一些命令。更加友好的 --staged 同义词并不是所有地方都可用,这可能会增加混淆。 - Ryan Feeley

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接