Wie kombiniere ich zwei Git-Repositorys, eines davon als Momentaufnahme mit dem aktuellen Verlauf?

Ich muss die Umkehrung von @ machdiese Frag.

So haben wir vor fast einem Jahr unser Git-Repository von sich getrennt, indem wir den aktuellen Status beider Zweige in ein neues Repository kopiert haben. Um es einfach zu machen:

<== 2015 Dec              1 Jan                    2016 Jan ==>
Past history, till SVN    New Repo First Commit    All commits to present

Wir werden bald Teilbäume verwenden, um jedes der Projekte in diesem Repository in ein eigenes Git-Repository umzuwandeln, aber ich möchte das nicht tun, solange wir 5 Jahre unserer Commit-Historie in unserem zentralen Repository verpassen. Hier sind die Schritte, die ich bisher versucht habe:

cd ProjectFull/
git reset --hard # Project was in a branch
git checkout master # Go to master before trying to rebase
git remote add ProjectSplit ../ProjectSplit # New repository is in another directory
git fetch ProjectSplit # Fetch new repository
git cherry-pick <initial commit hash> --strategy-option theirs
git pull --rebase -s recursive -X theirs origin master

Meine Idee war es, das erste Commit des neuen Repos herauszusuchen und dieses Commit dann wieder aufzuheben, aber das schlägt fehl. Die Befehle, die ich oben aufgeführt habe, führen nicht zu Fehlern, sondern löschen den gesamten Verlauf des alten Repository.

Hier ist ein abgeschnittenes Protokoll meiner Git-Rebase:

$ git rebase origin dev
First, rewinding head to replay your work on top of it...
Applying: Merge branch 'dev' of <REPO> into dev
Using index info to reconstruct a base tree...
<stdin>:298480: trailing whitespace.

<stdin>:298553: trailing whitespace.

<stdin>:298559: trailing whitespace.

<stdin>:298565: trailing whitespace.

<stdin>:298571: trailing whitespace.

warning: squelched 1751272 whitespace errors
warning: 1751277 lines add whitespace errors.
Falling back to patching base and 3-way merge...

CONFLICT (add/add): Merge conflict in <FILE>
Auto-merging <FILE>
CONFLICT (add/add): Merge conflict in <FILE>
Auto-merging <FILE>
CONFLICT (add/add): Merge conflict in <FILE>
Auto-merging <FILE>
CONFLICT (add/add): Merge conflict in <FILE>
Auto-merging <FILE>
CONFLICT (add/add): Merge conflict in <FILE>
Auto-merging <FILE>
<Same>

Failed to merge in the changes.
Patch failed at 0001 Merge branch 'dev' of <REPO> into dev
The copy of the patch that failed is found in:
   ProjectFull/.git/rebase-apply/patch

When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".

Das Skript in dieser Antwort ist auf halbem Weg durch die Patches des alten Repos gescheitert.

Diese Antwort funktioniert nur für unterschiedliche Repositorys.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage