硬重置后,索引是否变空或与新指向的提交的跟踪文件匹配?
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 commit
、git rebase
等)的拼写而造成混淆:这些使它 听起来像 索引是空的,而实际上索引只是与提交匹配。 diff 是空的。
请注意 git reset
使用 --hard
和默认值 --mixed
重置索引(以匹配提交)。使用 --soft
抑制索引重置。
我们知道,当我们切换分支时,索引内容会重置为我们刚刚切换到的分支所引用的提交。 (git结帐branch_name)
但是,这个命令呢?
git 重置 HEAD~1 --hard
当然,它撤消当前提交,移动到上一个提交,并且不保留当前提交的工作树和索引。但是,它是使索引 为空 还是用我们移动到的旧提交中跟踪的文件信息填充索引,例如 "git checkout branch_name"?
它——git reset
,带有适当的标志——填充你正在重新设置的提交的索引。
Git 由于 --allow-empty
和 --keep-empty
标志(git commit
、git rebase
等)的拼写而造成混淆:这些使它 听起来像 索引是空的,而实际上索引只是与提交匹配。 diff 是空的。
请注意 git reset
使用 --hard
和默认值 --mixed
重置索引(以匹配提交)。使用 --soft
抑制索引重置。