So kombinieren Sie zwei separate, nicht verwandte Git-Repositories zu einer einzigen History-Timeline

9

Ich habe zwei nicht zusammengehörende Git-Repositories (keine gemeinsamen Vorfahren), eines ist ein Super-Repository, das aus einer Anzahl kleinerer Projekte besteht (Lasst es Repository A nennen). Ein anderes ist nur ein behelfsmäßiges lokales Git Repository für ein kleineres Projekt (nennen wir es Repository B). Grafisch würde es so aussehen

%Vor%

Idealerweise würde ich Repo B gerne in Repo A mit einer einzigen History Timeline zusammenführen. So scheint es, dass ich ursprünglich Projekt in Repo A gestartet habe. Grafisch wäre dies das ideale Endergebnis

%Vor%

Ich habe ein wenig mit Submodulen und Subtree gelesen (Pro Git ist übrigens ein ziemlich gutes Buch), aber beide scheinen eine Lösung für die Aufrechterhaltung zweier separater Zweige mit Submodul zu bieten, die Änderungen von Upstream und Teilbaum ist etwas weniger Kopfschmerzen. Beide Lösungen erfordern zusätzliche und spezialisierte git-Befehle, um Eincheckvorgänge und die Synchronisierung zwischen Master- und Unterbaum / Modulzweig zu handhaben. Beide Lösungen ergeben auch mehrere Timelines (mit Unterbaum erhalten Sie sogar 3 separate Zeitachsen, wenn Sie --squash verwenden).

Die nächste Lösung von SO scheint über " Transplantation zu sprechen ", aber ist es das wirklich? Das Ziel ist es, ein einziges einheitliches Repository zu haben, in dem ich Check-Ins ziehen / schieben kann, so dass es kein Repo B mehr gibt, sondern nur Repo A am Ende.

    
Antony 20.03.2012, 05:24
quelle

1 Antwort

5

Ich denke du machst es so:

  1. git remote hinzufügen [repo b]
  2. git fetch // Holen Sie den Repo b in Repo a
  3. weil du die Geschichte so behalten willst: A0-A1-B1-B0-D1-C0-D0-E0-F0-G0-E1-H (aus Repo B) -HEAD (neues Repo A) Sie können zuerst den A0 als Startpunkt auswählen, danach git cherry-pick eins nach dem anderen.

Hoffe, das ist nützlich für dich.

Br, Tim

    
Tim 20.03.2012, 05:57
quelle

Tags und Links