title: Git reset --hard without losing history
body: <p>I have the following situation: </p>
  
  <pre><code>A-B-C-D (master)
  </code></pre>
  
  <p>I want to undo all local changes from D and go from D to where everything was like in B, but i don't want to just go to B. I want the stage of B to be appended to the current history, so that i end up with:</p>
  
  <pre><code>A-B-C-D-B' (master)
  </code></pre>
  
  <p>So like reverting from D to B but with keeping this Reverting in the history.</p>
  
  <p>When i do a reset <code>--hard</code> I lose my history from B to D and i end up with:</p>
  
  <pre><code>A-B (master)
  </code></pre>
  
  <p>I just want to append a point in history to the history and start working on this top point and this without creating new branches stashes etc. Like getting everything how it was in B and commiting it (with commit message: "reverted from B") on top.</p>
  
  <p>Is this somehow possible?</p>