关于git:为什么我要将暂存区域恢复到以前的状态,而不是工作树?

Why would I want to revert the staging area to a previous state, but not the working tree?

git reset --mixed(默认选项)将临时区域重置为以前的状态,但不重置工作树。

这看起来很奇怪。我什么时候想做?

另外,假设我作出了四项承诺:A、B、C和D。然后我向reset作出承诺。每次提交后,我都添加了一个文件。在执行git reset B后,我的集结区会是什么样子?


say I made four commits: A, B, C and D. I then reset to B. With each commit, I added a file. What would my staging area look like after performing git reset B?

git reset首先移动头部。所以head现在指向B

git reset --mixed也会重置索引(临时区域),因此索引会反射B

这意味着git status将显示由CD引入的所有修改(添加、删除或修改的文件),以便进行阶段性修改(因为工作树不变)。这可以让您有机会以不同的顺序,用更少或更多的提交来重做这些登台操作。