146 votes

Forking du dépôt Git de GitHub vers GitLab

Supposons que je veuille implémenter un correctif dans un projet de quelqu'un d'autre. Ce projet se trouve sur GitHub.

Je pourrais créer un fork sur GitHub et implémenter la correction.

Cependant, je voudrais créer mon fork sur GitLab plutôt que sur GitHub.

Est-ce possible ? Comment ?

J'ai lu cet article : https://about.gitlab.com/2016/12/01/how-to-keep-your-fork-up-to-date-with-its-origin/

Quoi qu'il en soit, je ne suis pas sûr de ce que je dois faire dans mon cas.

  • Dois-je simplement créer un fork sur GitLab du projet depuis GitHub ?
  • Ou dois-je créer un miroir sur GitLab du projet depuis GitHub ?
  • Ou dois-je créer un miroir sur GitLab et ensuite bifurquer sur le miroir ?
  • Ou dois-je faire quelque chose de complètement différent ?

Quelle est l'approche correcte.

Merci.

UPDATE

La mise en miroir des dépôts sur GitLab n'a probablement pas de sens. Je peux créer un miroir de MON dépôt GitHub sur GitLab mais je ne peux pas créer un miroir du dépôt de quelqu'un d'autre.

https://docs.gitlab.com/ee/workflow/repository_mirroring.html

Voici ce que j'ai fait jusqu'à présent :

J'ai cloné le projet GitHub original sur ma machine locale. J'ai commité le correctif dans une nouvelle branche de mon dépôt local. J'ai créé un projet vide sur GitLab. J'ai défini l'origine dans mon dépôt local sur ce projet vide sur GitLab et poussé les deux branches sur GitLab. J'ai défini upstream dans mon référentiel local comme étant le référentiel GitHub.

Lorsque je veux obtenir de nouveaux commits du dépôt GitHub d'origine vers le dépôt sur GitLab (c'est-à-dire synchroniser les dépôts), je peux le faire en utilisant mon dépôt local comme étape intermédiaire. Cependant, il n'y a pas de connexion directe entre le dépôt sur GitHub et le dépôt sur GitLab. Ma configuration est-elle correcte ? Y a-t-il une différence si je crée un fork sur GitHub ?

205voto

CJxD Points 1749

Si vous souhaitez simplement suivre les modifications, créez d'abord un dépôt vide dans GitLab (ou tout autre outil que vous utilisez) et clonez-le sur votre ordinateur.

Ensuite, ajoutez le projet GitHub comme " en amont " à distance avec :

git remote add upstream https://github.com/user/repo

Maintenant vous pouvez récupérer et tirer de l'amont s'il y a des changements. (Vous pouvez également pousser ou fusionner vers lui si vous avez des droits d'accès).

git pull upstream master

Enfin, repoussez vers votre propre dépôt GitLab :

git push origin master

Si vous ne voulez pas tirer manuellement sur upstream/push origin, GitLab offre une capacité de mise en miroir dans Settings => Repository => Mirroring repositories.

26 votes

Je voudrais juste compléter cette réponse pour expliquer pourquoi cette approche est la bonne. Le "Forking" est un concept créé par GitHub et n'existe donc que sur GitHub, mais il est néanmoins utile. Si vous considérez git pur lui-même (comme un serveur git pur fonctionnant quelque part dans votre réseau), cela reviendrait à cloner le dépôt sur votre propre serveur, puis à le cloner sur votre ordinateur local. Vous ajouteriez alors le dépôt d'origine comme amont localement. Je crois que c'est ce que GitHub fait dans les coulisses.

14 votes

Je veux juste ajouter que la bifurcation fait existent sur GitLab, voir ici par exemple.

4 votes

J'ai dû utiliser : pull upstream master --allow-unrelated-histories

20voto

aksh1618 Points 522

La voie du navigateur uniquement :

  1. Créez un nouveau projet dans Gitlab (un projet vide avec un nom suffit).
  2. Allez dans Paramètres -> Dépôt
  3. Entrez l'URL de GitHub dans la rubrique "Dépôts en miroir".
  4. Assurez-vous que la direction du miroir est "Tirer".
  5. Appuyez sur le bouton "Référentiel miroir".
  6. Appuyez sur l'icône de synchronisation à côté de l'entrée qui apparaît.

0 votes

Je n'ai pas la licence Enterprise Edition, c'est-à-dire que je ne vois pas "Mirroring repositories" à l'étape 3. Quoi qu'il en soit, si j'avais cette licence, pourrais-je créer un miroir d'un dépôt GitHub de quelqu'un d'autre ?

1 votes

@Cimlman C'est étrange, car je suis aussi sous une licence libre. Peut-être faut-il revérifier ? Cela devrait être le troisième dans 'Settings->Repository'. Juste pour être clair : les paramètres sur la barre latérale, pas le menu de profil.

0 votes

Après avoir cliqué sur Settings -> Repository sur la barre latérale, je peux voir les sections Protected branches, Protected Tags, Deploy Keys, Deploy Tokens.

5voto

koceka Points 1

Au lieu de forker, vous pouvez importer n'importe quel dépôt GitHub disponible publiquement en utilisant uniquement l'interface web :

  1. Dans votre tableau de bord GitLab, cliquez sur Nouveau projet
  2. Passez à la Importer le projet onglet
  3. Cliquez sur le Repo par URL bouton
  4. Remplissez le champ "URL du dépôt Git" et les autres champs du projet.
  5. Cliquez sur Créer un projet pour commencer le processus d'importation
  6. Une fois terminé, vous serez redirigé vers votre projet nouvellement créé.

J'ai utilisé cette technique récemment, et elle fonctionne sur tout dépôt public, même sans compte GitHub. Voir ce qui suit Documents de GitLab pour la source de l'information.

0voto

Coombesy Points 1569

Il est possible de forcer un dépôt Github privé.

  1. Cliquez sur nouveau projet
  2. Sélectionnez Importation
  3. Sélectionnez github
  4. OAuth2 utilisé pour authentifier et créer automatiquement l'application gitlab
  5. Sélectionnez le projet à bifurquer

Je viens de le faire avec un dépôt privé sur Github, importé avec succès (avec branches, etc.). Le projet importé reste automatiquement privé ;)

3 votes

L'importation d'un projet nécessite un "Personal Access Token". J'ai essayé d'en générer un sur GitHub. Il semble que cette fonctionnalité soit utile lorsque je veux créer un projet sur GitLab à partir de mon projet sur GitHub. Cette hypothèse est-elle correcte ? La question porte sur le fork d'un projet GitHub de quelqu'un d'autre.

2 votes

-1 parce que, et comme l'indique le commentaire précédent, la question porte sur la bifurcation d'un projet github de quelqu'un d'autre. Les instructions de cette réponse ne fonctionneront pas dans un tel cas.

1 votes

@NikosAlexandris êtes-vous sûr ? Ne pouvez-vous pas créer un jeton d'accès pour votre compte et accéder au repo de quelqu'un d'autre auquel vous avez un accès en lecture ? (par exemple, tous les repo publics)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X