title: Change parent of a commit
body: <p>I try to move a commit on top of another branch ignoring all changes done in target branch.</p>
  
  <p>Current situation is:</p>
  
  <pre><code>      master
          ↓
  --A--B--C
     \
      D--E
  </code></pre>
  
  <p>I want to move commit E in front of C</p>
  
  <pre><code>      master
          ↓
  --A--B--C--E'
     \
      D--E
  </code></pre>
  
  <p>with E' being identical to E except parrent is C now instead of D (this means tree of E and E' should be identical).</p>
  
  <p>To be more precides:</p>
  
  <pre><code>"git cat-file -p E" shows e.g.
  tree b98c9a9f9501ddcfcbe02a9de52964ed7dd76d5a
  parent D
  
  "git cat-file -p E'" should show
  tree b98c9a9f9501ddcfcbe02a9de52964ed7dd76d5a
  parent C
  </code></pre>
  
  <p>I tried rebase with differnt parameters as well as cherry-pick but all of them finally try to merge any changes done in C into the new E' commit :(</p>
  
  <p>Only solution preventing massive merge I found so far is</p>
  
  <pre><code>check out C
  copy over all stuff from E to C
  commit and get E'
  </code></pre>
  
  <p>Now the trees are identical and the parents are differnt but there must be a simpler and much faster way, since all that has to be done is creating a simple commit-object with existing tree-object.</p>