我期望 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
中,因为在br2
上运行git status
时不会得到干净的消息。我猜这是因为br1
和br2
的头最初具有文件foo
的相同版本,Git可以自动检测到这一点。问题:
Git何时决定不闪存工作树和索引?是否还有其他边角情况?