Hallo liebe Entwickler-Community!
Heute möchte ich euch eine spannende Sache vorstellen: Wie man ein externes Git Repository in ein Unterverzeichnis eines anderen Repositories merged und dabei die komplette Historie behält. Klingt kompliziert? Keine Sorge, ich zeige euch Schritt für Schritt, wie das geht.
Schritt 1: Vorbereitung des Ziel-Repositories
Zuerst müsst ihr euch in den master
Branch des Ziel-Repositories begeben:
git checkout master
Dann erstellt ihr einen neuen, leeren Branch. Wir nennen ihn gem-merge
:
git checkout --orphan gem-merge
Schritt 2: Bereinigen des neuen Branches
Im neuen Branch müsst ihr zunächst alle Dateien löschen:
git rm -rf .
Schritt 3: Hinzufügen des Externen Gems
Jetzt wird’s spannend. Ihr fügt das externe Gem als neues Remote-Repo hinzu:
git remote add other-gem git@gitlab.com:gems/other-gem.git
Danach merged ihr den master
des externen Gems in euren leeren Branch:
git merge other-gem/master
Schritt 4: Verschieben ins Unterverzeichnis
Nun verschiebt ihr alle Dateien in das gewünschte Unterverzeichnis. In unserem Beispiel ist es gems/other-gem/
:
git mv -k * gems/other-gem/
Anschließend commitet ihr die Änderungen:
git commit -m "Merge other-gem into subdirectory"
Schritt 5: Rebasing und Mergen
Jetzt wechselt ihr zurück zum master
und erstellt einen neuen Branch für den Merge:
git switch master
git switch -c merge-other-gem
Im letzten Schritt merged ihr die Änderungen mit der Option, nicht verwandte Historien zu erlauben:
git merge --no-ff gem-merge --allow-unrelated-histories
Fertig!
Jetzt könnt ihr euren neuen Merge-Request pushen:
git push
Und voilà! Ihr habt erfolgreich ein externes Gem in euer Repository integriert, ohne dessen Historie zu verlieren. Einfach, oder?
Ich hoffe, dieser Beitrag war hilfreich für euch. Lasst mich wissen, falls ihr Fragen habt oder weitere Tipps braucht. Happy coding! ?