Transférer les référentiels git de GitLab vers GitHub - pouvons-nous, comment et écueils (le cas échéant)?

204

Peut-on transférer des référentiels de GitLab vers GitHub si besoin est. Si oui, comment puis-je faire exactement la même chose?

En outre, y a-t-il des pièges à cela ou des mesures de précaution que je dois garder à l'esprit avant de le faire étant donné que je peux éventuellement décider de les déplacer vers GitHub (car il a plus de fonctionnalités pour le moment que je pourrais trouver utiles pour mon projet) ).

Boddhisattva
la source

Réponses:

210

Vous pouvez les transférer (simplement en ajoutant une télécommande à un dépôt GitHub et en les poussant)

  • créer un dépôt vide sur GitHub
  • git remote add github https://[email protected]/yourLogin/yourRepoName.git
  • git push --mirror github

L'histoire sera la même.

Mais vous perdrez le contrôle d'accès (les équipes définies dans GitLab avec des droits d'accès spécifiques sur votre repo)

Si vous rencontrez un problème avec l'URL https du dépôt GitHub:

The requested URL returned an error: 403

Tout ce que vous devez faire est d'entrer votre mot de passe GitHub, mais l'OP suggère:

Ensuite, vous devrez peut-être le pousser dans le sens ssh. Vous pouvez en savoir plus sur la façon de le faire ici.

Voir " Pousser vers Git retournant le code d'erreur 403 fatal: la requête HTTP a échoué ".

VonC
la source
Merci Von - votre réponse a fait l'affaire pour moi. J'espère que ça va.
boddhisattva
@boddhisattva C'est bon, mais je vois que votre modification a été rejetée. Je l'ai ajouté moi-même dans la réponse.
VonC
5
Des commentaires sur l'importation de problèmes et d'étiquettes? Est-il possible d'importer autre chose que du code par pull and push? Merci.
@YakovK Je ne connais pas de processus automatique prenant en compte les relations publiques et les problèmes. Au moins, les relations publiques dans GitHub sont des branches (voir stackoverflow.com/a/30542987/6309 ), de sorte qu'elles pourraient être importées.
VonC
1
@kiki va pousser toutes les branches locales, mais si votre dépôt local est lui-même un clone, il n'aura que master comme branche locale par défaut extraite. Vous devez d'abord créer les autres branches locales après leurs branches de suivi à distance respectives, avant de les utiliser push --mirror. stackoverflow.com/a/18911322/6309 . Voir également l'alternative mentionnée sur stackoverflow.com/a/24099141/6309 (dernière phrase)
VonC
149

C'est très simple grâce à la fonction d'importation du référentiel Connectez-vous à github.com,

Côté de l'image de profil, vous trouverez un +bouton, cliquez dessus, puis il y aura une option pour import repository. vous trouverez une page comme celle-ci. entrez la description de l'image ici L'URL du clone de votre ancien référentiel est requise, qui est l'URL du dépôt gitlab dans votre cas. puis sélectionnez Propriétaire, puis tapez le nom de ce dépôt et cliquez pour commencer le bouton d'importation.

manoj
la source
33
C'est super pratique que GitHub ait ajouté cela. Cependant, cela ne fonctionnera pas s'il s'agit d'un GitLab interne derrière un pare-feu, ce qui représente un grand cas d'utilisation pour GitLab.
abalter
7
Juste une note rapide pour toute autre personne utilisant l'option d'importation. J'ai dû désactiver MFA sur GitLab pour que cela fonctionne.
D-Day
2
Cela fonctionne bien. Beaucoup mieux que la réponse acceptée
LnxSlck
Comment importer une succursale?
coderInrRain
1
Le référentiel importé ne doit pas nécessairement être public maintenant, car github a rendu l'ajout de référentiels privés gratuit.
Shrey Garg
7

J'ai eu le problème opposé et j'ai finalement dû créer mon propre script shell bash pour que la société migre la centaine de dépôts de Github vers Gitlab en raison d'un changement dans la politique de l'entreprise.
Le script utilise l'API Gitlab pour créer un dépôt à distance et y pousser le dépôt Github. Il n'y a pas encore de fichier README.md, mais le sh est bien documenté.
La même chose peut être faite de façon opposée, j'imagine. J'espère que cela pourrait vous aider.
https://github.com/mahmalsami/migrate-github-gitlab/blob/master/migrate.sh

SamiX
la source
2

Si MFA est activé sur GitLab, vous devez aller dans Paramètres du référentiel / Référentiel -> Déployer les clés et en créer une, puis l'utiliser comme connexion lors de l'importation du référentiel sur GitHub

Alex Mokrushin
la source