硬重置后,索引是否变空或与新指向的提交的跟踪文件匹配?

Does the index become empty or match the tracked files of the newly pointed commit, after resetting hard?

我们知道,当我们切换分支时,索引内容会重置为我们刚刚切换到的分支所引用的提交。 (git结帐branch_name)

但是,这个命令呢?

git 重置 HEAD~1 --hard

当然,它撤消当前提交,移动到上一个提交,并且不保留当前提交的工作树和索引。但是,它是使索引 为空 还是用我们移动到的旧提交中跟踪的文件信息填充索引,例如 "git checkout branch_name"?

它——git reset,带有适当的标志——填充你正在重新设置的提交的索引。

Git 由于 --allow-empty--keep-empty 标志(git commitgit rebase 等)的拼写而造成混淆:这些使它 听起来像 索引是空的,而实际上索引只是与提交匹配。 diff 是空的。

请注意 git reset 使用 --hard 和默认值 --mixed 重置索引(以匹配提交)。使用 --soft 抑制索引重置。