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! ?

Diese Artikel könnten dich auch interessieren:

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.

Back to Top