title: Git rebase complex history on top of pre-existing repo, trivially-diverging almost from the beginning (due to signatures). See drawing
body: <h1>The situation:</h1>
  
  <p>1) I forked an 'original' repo, and started working on the 'forked' repo  with other people</p>
  
  <p>2) FastForward ~250 commits, and I change my github username, and also obtain a new no-reply email</p>
  
  <p>3) I rebase all history to replace my name and email in each commit I'd made (believing I was only affecting my commits)</p>
  
  <p>4) Force push into the remote forked repo, all the other teammates clone it from scratch and we keep moving</p>
  
  <h1>Problem:</h1>
  
  <p>When attempting to submit a pull request to the original repo (step 1) I realize my rebase deleted all signatures that were made in the commits we cloned from the original repo. This caused almost the entire history to change, due to signatures being part of the commit hash. Now I'm 500 commits ahead and ~250 behind original/master</p>
  
  <h1>Desired result:</h1>
  
  <p><img src="https://sketch.io/render/sk-f758f5a34e2c9d73c1ef45301d756d91.jpeg" alt="desired git history"></p>
  
  <h1>What I want to achieve:</h1>
  
  <p>I want to grab the entire history of our work in 'forked' (commits after ~250) and rebase it on top of 'original' (this time, without altering their commits) so it can be merged into 'original'</p>
  
  <p>In the final version, I would like to keep the history as is. All commits authored by who authored it, no squashing merge commits, and the likes. Is there any way to achieve that?</p>
  
  <h1>Tried:</h1>
  
  <p><strong>1)</strong> <em>merge --allow-unrrelated-histories</em></p>
  
  <pre><code>git clone original-url
  git remote add new-repo forked-url
  git checkout -b new forked/master
  git checkout master
  git merge new --allow-unrrelated-histories
  </code></pre>
  
  <p>=> Leads to a working solution, but duplicates almost all original commits (without signatures) which I would like to avoid.</p>
  
  <p><strong>2)</strong> <em>rebase</em></p>
  
  <pre><code>git clone original-url
  git remote add new-repo forked-url
  git checkout -b new forked/master
  git rebase -i master
  </code></pre>
  
  <p>=> Leads to working solution, but the entire 'forked' history is ripped apart and replaced with a single line of commits (all merges are lost, all different tracks are lost). For instance, almost all my teammates collaborations are lost, as git interprets every commit as made by me. They don't even figure as contributors.</p>