我希望git checkout <commit>
将工作树和索引都刷新到<commit>
版本。但是,在某些情况下,它将保留工作树和索引中的当前更改。例如:
git branch br1
git branch br2
git checkout br1
<make change M1 to file foo>
git add foo
<make change M2 to file foo>
git checkout br2
现在,在分支中所做的所有工作树/索引更改br1
都保留在分支中br2
,因为git status
onbr2
不会给出干净的消息。我猜这是因为文件头br1
和br2
原来有相同版本的文件foo
,Git 可以自动检测到这一点。
问题:
- Git 什么时候决定不刷新工作树和索引?还有其他极端案例吗?