Git Repository auf neuen Git Server umziehen – So migrierst du dein bestehendes Projekt zu GitLab oder GitHub

Wenn man ein bestehendes Git Repository auf einen neuen Git Server übertragen möchte, steht man oft vor der Frage, wie der Umzug technisch funktioniert und worauf man achten muss. Besonders dann, wenn der alte Server nicht mehr verfügbar ist oder man keinen Zugriff mehr hat. Genau das ist ein häufiges Szenario, zum Beispiel beim Wechsel von einem Self Hosted GitLab Server zu GitLab.com oder GitHub.

In diesem Beitrag zeige ich Schritt für Schritt, wie die Migration funktioniert, welche Git Befehle relevant sind und in welchen Fällen sich die Vorgehensweise unterscheidet. Außerdem erkläre ich typische Stolperfallen, Alternativen und gebe Antworten auf häufige Fragen.

Wann braucht man eine Migration?

Typische Szenarien:

  • Der alte Git Server ist nicht mehr erreichbar.
  • Du hast nur noch ein lokales Repository auf deinem PC oder Server.
  • Der alte Server gehört nicht mehr dir, z. B. Firmenwechsel.
  • Ein Projekt soll zentral zu GitLab.com oder GitHub umziehen.
  • Du möchtest mehrere Repositories konsolidieren.

In diesen Fällen ist es wichtig zu wissen, ob du alle alten Daten noch hast oder nur eine lokale Kopie des Standes der letzten Klonung.

Was du beim Umzug beachten musst

Bevor du ein Git Repository migrierst, solltest du diese Punkte prüfen:

  • Hast du noch Zugriff auf den alten Server?
    Wenn ja, kannst du git push --mirror verwenden und wirklich alles übernehmen.
  • Hast du nur noch eine lokale Kopie?
    Dann kannst du nur die Branches und Tags übertragen, die lokal vorhanden sind.
  • Wurden Merge Requests, Issues, Wikis oder Pipelines genutzt?
    Diese Daten sind nicht Teil des Repositories und können nicht per Git übertragen werden.
  • GitLab und GitHub übertragen nur Git Daten über git push, keine Server-Metadaten.

Neues Projekt am Zielserver anlegen

Unabhängig davon, ob du GitLab oder GitHub nutzt, musst du zuerst ein neues leeres Projekt erstellen.

GitLab

  • Gruppe öffnen
  • „New project“
  • „Create blank project“
  • Option „Initialize repository with a README“ deaktivieren, wenn du migrieren möchtest
    (sonst entsteht Merge Konflikt beim Push)

GitHub

  • Repositories
  • „New“
  • „Repository name“ wählen
  • Keine README, keine .gitignore erstellen
  • Repository erstellen

Git Repository auf neuen Git Server übertragen

1. Prüfen, ob ein altes origin existiert

git remote -v

2. Remote URL auf das neue Projekt setzen

git remote set-url origin <NEUE-URL>

Beispiel GitLab:

https://gitlab.com/benutzer/projekt.git

Beispiel GitHub:

https://github.com/benutzer/projekt.git

3. Alle lokalen Branches übertragen

Wenn der alte Server nicht mehr erreichbar ist:

git push -u origin --all #alternativ kann auch git push --mirror origin verwendet werden

Dieser Befehl überträgt:

  • alle lokalen Branches
  • inkl. Master oder Main
  • setzt Tracking für zukünftige Pushs

4. Tags übertragen

Wenn das Projekt Tags verwendet hat:

git push origin --tags

Tabelle: Unterschiede zwischen wichtigen Git Push Befehlen

BefehlFunktionEmpfehlung
git push --mirror originKopiert alle Branches, Tags, Remote Einstellungen und ReferenzenNur verwenden, wenn der alte Server noch erreichbar ist
git push -u origin --allÜberträgt alle lokalen BranchesStandard für Migration ohne alten Server
git push origin --tagsÜberträgt alle TagsNach dem Push der Branches ausführen
git push -f originErzwingt das Überschreiben des Ziel-BranchesNur bei Konflikten mit leerem Zielrepo
git remote set-url origin <URL>Ändert die Remote AdresseWichtigster Schritt bei der Migration

Migration GitLab vs GitHub

ThemaGitLabGitHub
Projekt ohne README startenMöglichMöglich
Import Funktionen (Web UI)Sehr umfangreichUmfangreich, aber weniger als GitLab
Übernahme von IssuesNein (nur über API oder Exporte)Nein
Push Befehle identischJaJa
LFS MigrationUnterstütztUnterstützt

In der Praxis gibt es keine großen Unterschiede, da beide Plattformen Git nativ unterstützen. Die Migration erfolgt bei beiden über dieselben Befehle.

Unterschiede zwischen GitHub und GitLab

Auch wenn GitHub und GitLab auf den ersten Blick sehr ähnlich wirken und beide hervorragend als Git Server fungieren, gibt es einige Unterschiede, die beim Umziehen eines Git Repositories oder beim langfristigen Arbeiten relevant sein können. Viele Einsteiger fragen sich, ob der Umzug auf GitHub anders funktioniert als auf GitLab oder ob bestimmte Funktionen fehlen. Die gute Nachricht: Die Git Befehle sind bei beiden identisch, aber die Plattformen selbst unterscheiden sich in einigen Bereichen deutlich.

Übersicht der wichtigsten Unterschiede

BereichGitHubGitLab
FokusGrößte Entwicklerplattform weltweit, starker Community FokusDevOps Plattform mit integriertem CI/CD und Projektmanagement
Private RepositoriesKostenlos, aber mit begrenzten FeaturesKostenlos und umfangreiche Funktionen, auch für Teams
CI/CDGitHub Actions, sehr flexibelGitLab CI/CD nativ integriert und eng verzahnt
ProjektstrukturFlache Struktur, Fokus auf RepositoriesStarke Gruppen- und Untergruppenstruktur
Issue ManagementEinfach, übersichtlichUmfangreicher mit Boards, Epics, Roadmaps
WikisPro RepositoryPro Projekt mit mehr Verwaltungsfunktionen
Import ToolsGut, aber nicht so umfangreich wie GitLabSehr umfangreiche Importfunktionen für GitHub, Bitbucket, Jira usw.
Self HostingGitHub Enterprise, teuerGitLab kann komplett selbst gehostet werden, Community Edition kostenlos
RechteverwaltungEinfach gehaltenSehr granular und rollenbasiert
Kostenloser StorageFür LFS limitiertHöherer freier Speicher für Repos und Container Registry

Welches System ist wofür besser geeignet?

GitHub ist ideal, wenn:

  • du ein Open Source Projekt startest
  • du viele externe Entwickler einbeziehen möchtest
  • du auf eine große Community und viele fertige Integrationen setzt
  • du GitHub Actions verwenden möchtest

GitLab ist ideal, wenn:

  • du eine Komplettlösung für DevOps suchst
  • du viele Projekte in Gruppen strukturieren möchtest
  • du Self Hosting oder vollständige Kontrolle brauchst
  • du CI/CD ohne zusätzliche Tools nutzen möchtest

Unterschiede bei der Migration

Für die eigentliche Migration eines Git Repositories spielt es kaum eine Rolle, ob du GitHub oder GitLab verwendest, da beide dieselben Git Standards unterstützen. Die Unterschiede liegen eher im Umfeld:

  • GitHub legt automatisch den Branch main an, GitLab macht das nur optional.
  • GitLab zeigt nach dem Push automatisch Hinweise zur Erstellung von Merge Requests an.
  • GitHub legt mehr Wert auf Pull Requests statt Merge Requests.
  • GitLab unterstützt Mirror Repositories nativ, GitHub nur über Automation oder Actions.
  • GitLab bietet umfangreiche Importassistenten, um GitHub Projekte inklusive Issues zu übernehmen.

Empfehlungen und Best Practices

  • Projekt öffentlich oder privat? Vorher im Zielprojekt festlegen.
  • SSH Key oder HTTPS? SSH spart das ständige Eingeben von Passwörtern.
  • Lokale Branches prüfen, bevor du sie hochlädst.
  • Alte Branches, die nicht mehr gebraucht werden, vorher löschen.
  • Nach dem Push prüfen, ob alle Branches und Tags korrekt übernommen wurden.

FAQ

Kann ich Issues, Merge Requests oder Wiki Inhalte übertragen?

Nein, diese Daten liegen nicht im Git Repository, sondern auf dem Server. Eine Migration ist nur über Exporte oder APIs möglich.

Was passiert, wenn im Zielprojekt bereits Dateien existieren?

Dann kommt es zu Konflikten. Erstelle das Zielprojekt am besten komplett leer.

Was passiert mit alten Branches, die auf dem Server existierten, aber nicht lokal?

Sie sind verloren, wenn du keinen Zugriff mehr auf den alten Server hast.

Muss ich den Master Branch in Main umbenennen?

Nein. GitLab und GitHub akzeptieren beide Namen.

Durchschnittliche Bewertung 0 / 5. Bewertungen: 0

Kommentar verfassen

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

Nach oben scrollen