Ich habe versucht, die gleiche Sache für Tage zu tun, ich bin mit Git 2.7.2. Subtree nicht bewahren die Geschichte.
Sie können diese Methode verwenden, wenn Sie das alte Projekt nicht wieder verwenden wollen.
Ich würde vorschlagen, dass Sie zuerst in die Zweigstelle B gehen und in der Zweigstelle arbeiten.
Hier sind die Schritte ohne Verzweigung:
cd B
# You are going to merge A into B, so first move all of B's files into a sub dir
mkdir B
# Move all files to B, till there is nothing in the dir but .git and B
git mv <files> B
git add .
git commit -m "Moving content of project B in preparation for merge from A"
# Now merge A into B
git remote add -f A <A repo url>
git merge A/<branch>
mkdir A
# move all the files into subdir A, excluding .git
git mv <files> A
git commit -m "Moved A into subdir"
# Move B's files back to root
git mv B/* ./
rm -rf B
git commit -m "Reset B to original state"
git push
Wenn Sie nun eine der Dateien in Unterverzeichnis A protokollieren, erhalten Sie den vollständigen Verlauf
git log --follow A/<file>
Dies war der Beitrag, der mir dabei geholfen hat:
http://saintgimp.org/2013/01/22/merging-two-git-repositories-into-one-repository-without-losing-file-history/
17 Stimmen
Wenn Sie nur versuchen, zwei Repositories zu einem einzigen zusammenzufassen, ohne beide Repositories behalten zu müssen, werfen Sie einen Blick auf diese Frage: stackoverflow.com/questions/13040958/
0 Stimmen
Für das Zusammenführen von Git Repo in einem benutzerdefinierten Verzeichnis mit Speicherung aller Comits verwenden Sie stackoverflow.com/a/43340714/1772410