title: How do I reset the working tree without moving HEAD?
body: <p>Given a git branch with some commits on it (C is the most recent commit):</p>
  
  <pre><code>A -&gt; B -&gt; C
  </code></pre>
  
  <p>How do I reset my workspace so that all the files are in the state they were at commit B, but HEAD is still at C?</p>
  
  <p>I've looked at <code>git-reset</code>, but none of the options seem to help. The man page suggests that all the different modes will move HEAD:</p>
  
  <blockquote>
  <pre><code>--soft
     Does not touch the index file or the working tree at all 
     (but resets the head to &lt;commit&gt;, just like all modes do).
  </code></pre>
  </blockquote>
  
  <p>I've tried <code>git reset HEAD~</code> but that moves HEAD.</p>