Łączenie dwóch repozytoriów git w celu uzyskania historii liniowej

Mam dwa repozytoria git i wiele nieśledzonych zmian między nimi:

   ftp -->            C-- (untracked changes) --D
                     /                           \
   git        A--B--C <-- old/master              \
                                                   \
                                                    \
                                  new/master -->     D--E--F 

Jak mogę połączyć stare repozytorium w nowe repozytorium, aby mieć liniową historię

A--B--C--D--E--F

EDYTOWAĆ:

zainspirowany przezJak mogę połączyć repozytoria Git w liniową historię?

Zrobiłem:

git clone url://new new
cd new/
git remote add old url://old
git fetch old
git reset --hard origin/master
git filter-branch --parent-filter 'sed "s_^\$_-p old/master_"' HEAD
git push origin master

Jedynym problemem jest to, że każde zatwierdzenie z new / master zostało podwojone (myślę, że ze względu na zmianę rodzica), więc teraz (M jest zatwierdzeniem scalania)

         D---E---F--         
                    \
A--B--C--D'--E'--F'--M 

Jak mogę łatwo usunąć niepotrzebne zatwierdzenia (D - F i może M)?

questionAnswers(4)

yourAnswerToTheQuestion