Übertragen Sie Git-Repositorys von GitLab auf GitHub - können wir, wie und Fallstricke (falls vorhanden)?

204

Kann man bei Bedarf Repositorys von GitLab auf GitHub übertragen? Wenn ja, wie genau kann ich dasselbe tun?

Gibt es auch Fallstricke oder Vorsichtsmaßnahmen, die ich beachten muss, bevor ich dies tue, da ich mich möglicherweise entscheide, sie eventuell auf GitHub zu verschieben (da es im Moment mehr Funktionen gibt, die ich für mein Projekt nützlich finden könnte? ).

Boddhisattva
quelle

Antworten:

209

Sie können diese übertragen (indem Sie einfach eine Fernbedienung zu einem GitHub-Repo hinzufügen und sie drücken).

  • Erstelle ein leeres Repo auf GitHub
  • git remote add github https://[email protected]/yourLogin/yourRepoName.git
  • git push --mirror github

Die Geschichte wird dieselbe sein.

Sie verlieren jedoch die Zugriffskontrolle (in GitLab definierte Teams mit bestimmten Zugriffsrechten auf Ihrem Repo)

Wenn Sie Probleme mit der https-URL des GitHub-Repos haben:

The requested URL returned an error: 403

Alles was Sie tun müssen, ist Ihr GitHub-Passwort einzugeben, aber das OP schlägt vor:

Dann müssen Sie es möglicherweise in die SSH-Richtung schieben. Hier erfahren Sie mehr darüber.

Siehe " Pushing to Git mit fehlerhaftem Fehlercode 403: HTTP-Anforderung fehlgeschlagen ".

VonC
quelle
Vielen Dank von - Ihre Antwort hat den Trick für mich getan. Ich habe gerade ein wenig zu Ihrer Antwort hinzugefügt, was die genaue Git-Fernbedienung betrifft. Hoffe das ist okay.
Boddhisattva
@boddhisattva Es ist in Ordnung, aber ich sehe, dass Ihre Bearbeitung abgelehnt wurde. Ich habe es selbst wieder in die Antwort aufgenommen.
VonC
5
Kommentare zum Importieren von Problemen und Labels? Kann etwas anderes als Code durch Ziehen und Drücken importiert werden? Vielen Dank.
@YakovK Mir ist kein automatischer Prozess bekannt, der PR und Probleme berücksichtigt. Zumindest sind PR in GitHub Zweige (siehe stackoverflow.com/a/30542987/6309 ), sodass sie importiert werden können.
VonC
1
@kiki Es werden alle lokalen Zweige gepusht , aber wenn Ihr lokales Repo selbst ein Klon ist, hat es nur den Master als standardmäßigen lokal ausgecheckten Zweig. Sie müssen zuerst die anderen lokalen Zweige nach ihren jeweiligen Fernverfolgungszweigen erstellen, bevor Sie sie verwenden können push --mirror. stackoverflow.com/a/18911322/6309 . Siehe auch die unter stackoverflow.com/a/24099141/6309 (letzter Satz) erwähnte Alternative
VonC
149

Dies ist sehr einfach durch Importieren der Repository-Funktion Anmelden bei github.com,

Seite des Profilbildes finden Sie eine +Schaltfläche, klicken Sie darauf, dann gibt es eine Option zu import repository. Sie finden eine Seite wie diese. Geben Sie hier die Bildbeschreibung ein Die Klon-URL Ihres alten Repositorys ist erforderlich. In Ihrem Fall handelt es sich dabei um die Gitlab-Repo-URL. Wählen Sie dann Eigentümer und geben Sie den Namen für dieses Repo ein und klicken Sie auf, um mit dem Importieren zu beginnen.

Manoj
quelle
32
Das ist super praktisch, dass GitHub das hinzugefügt hat. Es funktioniert jedoch nicht, wenn es sich um ein internes GitLab hinter einer Firewall handelt, was einen großen Anwendungsfall für GitLab darstellt.
Abalter
7
Nur eine kurze Notiz für alle anderen, die die Importoption verwenden. Ich musste MFA auf GitLab deaktivieren, damit dies funktioniert.
D-Day
2
Das funktioniert gut. Viel besser als die akzeptierte Antwort
LnxSlck
Wie, wenn ich Zweig importieren möchte?
coderInrRain
1
Das importierte Repository muss jetzt nicht unbedingt öffentlich sein, da Github das Hinzufügen privater Repositorys kostenlos gemacht hat.
Shrey Garg
7

Ich hatte das gegenteilige Problem und musste schließlich mein eigenes Bash-Shell-Skript für das Unternehmen erstellen, um die hundert Repos aufgrund einer Änderung der Unternehmensrichtlinien von Github nach Gitlab zu migrieren.
Das Skript verwendet die Gitlab-API, um ein Repo aus der Ferne zu erstellen und das Github-Repo hineinzuschieben. Es gibt noch keine README.md-Datei, aber die sh ist gut dokumentiert.
Dasselbe kann ich mir auch anders vorstellen. Hoffe das könnte helfen.
https://github.com/mahmalsami/migrate-github-gitlab/blob/master/migrate.sh

SamiX
quelle
2

Wenn Sie MFA in GitLab aktiviert haben, gehen Sie zu Repository-Einstellungen / Repository -> Schlüssel bereitstellen und erstellen Sie einen. Verwenden Sie ihn dann als Login, während Sie Repo auf GitHub importieren

Alex Mokrushin
quelle