Trasferire repository git da GitLab a GitHub - possiamo, come e quali insidie?


204

È possibile trasferire repository da GitLab a GitHub se necessario. In tal caso, come posso fare esattamente lo stesso?

Inoltre, ci sono delle insidie ​​nel fare ciò o misure precauzionali che devo tenere a mente prima di farlo dato che potrei decidere di trasferirli su GitHub (poiché al momento ha più funzionalità che potrei trovare utili per il mio progetto ).

Risposte:


210

Puoi trasferirli (semplicemente aggiungendo un telecomando a un repository GitHub e spingendolo)

  • creare un repository vuoto su GitHub
  • git remote add github https://yourLogin@github.com/yourLogin/yourRepoName.git
  • git push --mirror github

La storia sarà la stessa.

Ma perderai il controllo di accesso (i team definiti in GitLab con diritti di accesso specifici sul tuo repository)

In caso di problemi con l'URL https del repository GitHub:

The requested URL returned an error: 403

Tutto quello che devi fare è inserire la tua password GitHub, ma l'OP suggerisce:

Quindi potrebbe essere necessario spingerlo nel modo ssh. Puoi leggere di più su come farlo qui.

Vedere " Invio a Git che restituisce il codice di errore 403 fatale: richiesta HTTP non riuscita ".


Grazie Von - la tua risposta ha funzionato per me. Ho appena aggiunto un po 'alla tua risposta per quanto riguarda l'esatto git remoto aggiungi cmd e spingendo le cose nel modo ssh se necessario. Spero che vada bene.
Boddhisattva,

@boddhisattva Va bene, ma vedo che la tua modifica è stata respinta. L'ho aggiunto di nuovo nella risposta.
VonC

5
Hai commenti sull'importazione di problemi ed etichette? È possibile importare qualcosa di diverso dal codice tramite pull e push? Grazie.

@YakovK Non sono a conoscenza di un processo automatico che tenga conto delle PR e dei problemi. Almeno, PR in GitHub sono rami (vedi stackoverflow.com/a/30542987/6309 ), quindi potrebbero essere importati.
VonC,

1
@kiki spingerà tutti i rami locali, ma se il tuo repository locale è esso stesso un clone, avrà solo master come ramo di checkout locale predefinito. Prima di utilizzare è necessario creare gli altri rami locali dopo i rispettivi rami di tracciamento remoto repsective push --mirror. stackoverflow.com/a/18911322/6309 . Vedi anche l'alternativa menzionata su stackoverflow.com/a/24099141/6309 (ultima frase)
VonC

149

È molto semplice importando la funzione di repository Accedi a github.com,

+Sul lato dell'immagine del profilo troverai il pulsante fai clic su quello, quindi ci sarà l'opzione import repository. troverai una pagina come questa. inserisci qui la descrizione dell'immagine È richiesto l'URL del clone del tuo vecchio repository, che nel tuo caso è gitlab repo url. quindi selezionare Proprietario, quindi digitare il nome per questo repository e fare clic per iniziare il pulsante di importazione.


33
È molto conveniente che GitHub l'abbia aggiunto. Tuttavia, non funzionerà se si tratta di un GitLab interno dietro un firewall, che rappresenta un caso d'uso di grandi dimensioni per GitLab.
abalter,

7
Solo una breve nota per chiunque utilizzi l'opzione di importazione. Ho dovuto disabilitare MFA su GitLab perché questo funzionasse.
D-Day

2
Funziona benissimo. Molto meglio della risposta accettata
LnxSlck

Come posso importare una filiale?
coderInrain

1
Il repository importato non deve necessariamente essere pubblico ora, poiché github ha reso gratuita l'aggiunta di repository privati.
Shrey Garg,


7

Ho avuto il problema opposto e alla fine ho dovuto creare il mio script bash shell affinché la società migrasse le centinaia di repository da Github a Gitlab a causa di un cambiamento nella politica aziendale.
Lo script utilizza l'API Gitlab per creare un repository in remoto e inserire il repository Github in esso. Non esiste ancora un file README.md, ma sh è ben documentato.
La stessa cosa può essere fatta in modo opposto a quanto immagino. Spero che questo possa aiutare.
https://github.com/mahmalsami/migrate-github-gitlab/blob/master/migrate.sh


2

Se hai abilitato MFA su GitLab, vai su Impostazioni repository / Repository -> Distribuisci chiavi e creane uno, quindi usalo come login durante l'importazione di repository su GitHub

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.