title: What's the difference between git reset file and git checkout file?
body: <p>Why is it that git allows me to reset a file? I thought I understood <code>reset</code>, in the sense that it was moving the HEAD ... clearly I was wrong.</p>
  
  <p>So, <code>git reset sha file</code> seems to do the same as <code>git checkout sha file</code>, with the exception that I see <code>file</code> in the index and in the working directory.</p>
  
  <p>It doesn't make sense to me. Can someone please explain the difference?</p>