title: Rewriting git repo history without going through all commits
body: <p>I'd like to collapse some ugly merges in a git repository without having to rebase all of the commits that happened since. Eg:</p>
  
  <pre><code>* sha0                       *
  | ... ~50 commits            | ... ~50 commits
  *                            *
  * sha1             --&gt;       * sha1
  |\                           * sha2
  * *                          *
  * |\                         ...
  |/  *
  *   |
  *  /
  | /
  |/
  * sha2
  *
  ...
  </code></pre>
  
  <p>What's the best way to go about doing this?</p>
  
  <p>Edit:</p>
  
  <p>After trying a suggestion in one of the replies I realized that I should clarify:</p>
  
  <ul>
  <li>I'd like to rewrite the history between sha1 and sha2</li>
  <li>I need to retain the commits that are between sha0 and sha1</li>
  </ul>