我认为索引仅适用于您为下一次提交暂存的文件,但重置和checkout都会更新索引:
git checkout
要准备工作,请通过更新工作树中的索引和文件来切换到它,
VonC.. 5
git reset
可以更改just HEAD
(git reset --soft
),或HEAD
index(默认),或HEAD
索引和工作树(git reset --hard
).
git checkout
只有在切换分支时才能更改索引,以便您开始根据该分支的内容暂存您的工作.
该讨论指出了checkout更改索引的原因:
我对该指数的理解是,它是中间人:
将事物从工作树移动到对象存储库
用于将事物从对象存储库移动到工作树.
因此,当您签出blob时,它首先会从对象存储区复制到索引,然后从索引复制到工作树.
torek 在评论中提到反映同一线程另一部分的东西:
请注意,您可以通过使用
git show
提取文件来绕过写入索引:
git show HEAD~3:file > file
将覆盖工作目录版本
file
,非常类似git checkout HEAD~3 -- file
,但不会更新索引.
我将git show
详细介绍" 如何从Git中的特定版本中检索单个文件? ".
另请注意,git-show
不对文件应用过滤器(涂抹/清除或任何自定义过滤器).
git reset
可以更改just HEAD
(git reset --soft
),或HEAD
index(默认),或HEAD
索引和工作树(git reset --hard
).
git checkout
只有在切换分支时才能更改索引,以便您开始根据该分支的内容暂存您的工作.
该讨论指出了checkout更改索引的原因:
我对该指数的理解是,它是中间人:
将事物从工作树移动到对象存储库
用于将事物从对象存储库移动到工作树.
因此,当您签出blob时,它首先会从对象存储区复制到索引,然后从索引复制到工作树.
torek 在评论中提到反映同一线程另一部分的东西:
请注意,您可以通过使用
git show
提取文件来绕过写入索引:
git show HEAD~3:file > file
将覆盖工作目录版本
file
,非常类似git checkout HEAD~3 -- file
,但不会更新索引.
我将git show
详细介绍" 如何从Git中的特定版本中检索单个文件? ".
另请注意,git-show
不对文件应用过滤器(涂抹/清除或任何自定义过滤器).