暂存区可以通过
git reset
进行更新,但是否有任何情况下git checkout
(或带有许多额外参数)会从新的HEAD更新暂存区呢?
更新:看起来git的行为取决于你是检出文件还是分支/提交。
- 如果没有指定文件,则将更新HEAD以指向/切换到给定的分支/提交,并且如果暂存区和工作树中有任何更改,则会发出警告并阻止切换。例如:
git checkout DevBranch
。 - 如果指定了文件但没有分支/提交,则将指定的文件从暂存区复制到工作树中,不会触及暂存区(不会更新HEAD)。例如:
git checkout file.txt
或git checkout -- file.txt
。 - 如果同时指定了分支/提交和文件,则将在给定的分支/提交中更新暂存区和工作树中的指定文件(不会更新HEAD)。例如:
git checkout DevBranch -- file.txt
。
git checkout
)之后更改暂存区中的内容。 - Thomson