title: Why does `git checkout <branch> <file>` stage the change?
body: <p>If I start from a clean working tree and run <code>git checkout &lt;branch&gt; &lt;file&gt;</code>, where <code>&lt;branch&gt;</code> has a different version of this file, I end up with a staged rather than an unstaged change.</p>
  
  <p>What's the reason for this? Is this just for consistency with other commands like <code>git mv</code>, which you would expect to stage changes? Is it for convenience when using <code>git checkout</code> to resolve merge conflicts? Or is there some other rationale?</p>
  
  <p>It seems mildly odd to me since just using <code>git checkout &lt;branch&gt; &lt;file&gt;</code> does not offer any indication of whether I plan to commit the change.</p>