Wenn Sie drei oder mehr Projekte in einem Paket zusammenführen möchten simple übertragen, führen Sie die Schritte aus, die in den anderen Antworten beschrieben sind ( remote add -f
, merge
). Setzen Sie dann den Index (sanft) auf den alten Kopf zurück (wo keine Zusammenführung stattfand). Fügen Sie alle Dateien ( git add -A
) und übertragen Sie sie (Meldung "Zusammenführung der Projekte A, B, C und D zu einem Projekt). Dies ist nun die Commit-id von master.
Erstellen Sie nun .git/info/grafts
mit folgendem Inhalt:
<commit-id of master> <list of commit ids of all parents>
Laufen lassen git filter-branch -- head^..head head^2..head head^3..head
. Wenn Sie mehr als drei Zweige haben, fügen Sie einfach so viel head^n..head
wie Sie Zweige haben. Um Tags zu aktualisieren, fügen Sie --tag-name-filter cat
. Fügen Sie dies nicht immer hinzu, da dies zu einem Neuschreiben einiger Übertragungen führen kann. Für Details siehe Manpage von filter-branch suchen Sie nach "Transplantate".
Ihre letzte Übergabe hat nun die richtigen Eltern zugeordnet.
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