Comment puis-je bifurquer d'un dépôt public, mais rendre ma bifurcation privée ? J'ai l'abonnement pour supporter les dépôts privés.
@Will Je suis dans la même situation, ma version git est la suivante git version 2.21.0.windows.1
Comment puis-je bifurquer d'un dépôt public, mais rendre ma bifurcation privée ? J'ai l'abonnement pour supporter les dépôts privés.
Les réponses sont correctes mais ne mentionnent pas comment synchroniser le code entre le repo public et le fork.
Voici le flux de travail complet (nous l'avons fait avant l'open sourcing) React Native ):
Tout d'abord, dupliquer le repo comme d'autres l'ont dit (détails aquí ):
Créer un nouveau repo (appelons-le private-repo
) par l'intermédiaire du Interface utilisateur Github . Alors :
git clone --bare https://github.com/exampleuser/public-repo.git
cd public-repo.git
git push --mirror https://github.com/yourname/private-repo.git
cd ..
rm -rf public-repo.git
Clonez le dépôt privé afin de pouvoir travailler dessus :
git clone https://github.com/yourname/private-repo.git
cd private-repo
make some changes
git commit
git push origin master
Pour tirer les nouveautés du dépôt public :
cd private-repo
git remote add public https://github.com/exampleuser/public-repo.git
git pull public master # Creates a merge commit
git push origin master
Génial, votre repo privé a maintenant le dernier code du repo public plus vos changements.
Enfin, pour créer une pull request repo privé -> repo public :
Utilisez l'interface utilisateur de GitHub pour créer un fork du repo public (le petit bouton "Fork" en haut à droite de la page du repo public). Ensuite :
git clone https://github.com/yourname/the-fork.git
cd the-fork
git remote add private_repo_yourname https://github.com/yourname/private-repo.git
git checkout -b pull_request_yourname
git pull private_repo_yourname master
git push origin pull_request_yourname
Vous pouvez maintenant créer une demande de retrait via l'interface utilisateur de Github pour public-repo, comme décrit ci-dessous aquí .
Une fois que les responsables du projet ont examiné votre demande de retrait, ils peuvent la fusionner.
Bien sûr, tout le processus peut être répété (il suffit de laisser de côté les étapes où vous ajoutez des télécommandes).
@Will Je suis dans la même situation, ma version git est la suivante git version 2.21.0.windows.1
Je n'ai toujours pas trouvé le moyen de résoudre ce problème malheureusement, @Betlista et il est apparu à plusieurs reprises et je suis revenu ici pour trouver une solution :(
Cela fonctionne, bien qu'un peu différemment. ( J'ai essayé en août 2015). Je n'ai pas trouvé l'option/bouton d'importation, alors j'ai fait une recherche sur Google et j'ai abouti à cette URL. import.github.com/new Ici, vous pouvez entrer l'url github existante et cliquer sur le bouton Vérifiez-le. bouton. Une fois vérifié, vous pouvez entrer le nom de votre nouveau repo et cliquer sur le bouton Privé, puis sur Commencer l'importation
Je crois que @MattvanAndel veut dire que le commentaire est correct, pas la réponse originale. J'ai moi aussi suivi le commentaire de Shiva et cela a fonctionné. Notez que vous ne devez PAS créer le dépôt privé local en premier !
Si je crée un "fork" privé de cette manière et que je veux en faire un fork public à nouveau, puis-je le faire ?
Il suffit d'aller sur https://github.com/new/import .
Dans la section "URL du clone de votre ancien dépôt" collez l'URL du dépôt que vous voulez et dans "Confidentialité" sélectionnez Private
.
NON SUPPORTÉ : Selon le support GitHub, l'importation est uniquement destinée à convertir des projets externes en github et son utilisation sur des dépôts github peut avoir des conséquences inattendues. Il est évident que cela fonctionne pour certains projets, d'après les réponses ici, mais j'ai rencontré des problèmes en utilisant import sur un grand projet (c'est ce qui m'a conduit au support GitHub). Je pense que cela ne vaut pas la peine de prendre le risque lorsque la duplication d'un dépôt est simple.
Les réponses actuelles sont un peu dépassées, donc, pour plus de clarté :
La réponse courte est :
Ceci est documenté sur GitHub : duplication d'un référentiel
Existe-t-il un moyen de tirer les modifications en amont ? C'est important pour un repo qui a une licence libérale - j'ai rendu mon repo privé mais j'aimerais quand même fusionner les changements en amont.
Vous devez dupliquer le repo
Vous pouvez voir cette doc (de github)
Pour créer une duplication d'un dépôt sans bifurquer, vous devez exécuter une commande spéciale de clonage contre le dépôt original et faire un miroir vers le nouveau dépôt.
Dans les cas suivants, le dépôt vers lequel vous essayez de pousser - comme exampleuser/new-repository ou exampleuser/mirrored - devrait déjà exister sur GitHub. Voir "Créer un nouveau référentiel" pour plus d'informations.
Mise en miroir d'un référentiel
Pour faire une copie exacte, vous devez effectuer à la fois un bare-clone et un mirror-push.
Ouvrez la ligne de commande, et tapez ces commandes :
$ git clone --bare https://github.com/exampleuser/old-repository.git # Make a bare clone of the repository $ cd old-repository.git $ git push --mirror https://github.com/exampleuser/new-repository.git # Mirror-push to the new repository $ cd .. $ rm -rf old-repository.git # Remove our temporary local repository
Si vous voulez faire un miroir d'un dépôt dans un autre endroit, y compris obtenir des mises à jour de l'original, vous pouvez cloner un miroir et pousser périodiquement les changements.
$ git clone --mirror https://github.com/exampleuser/repository-to-mirror.git # Make a bare mirrored clone of the repository $ cd repository-to-mirror.git $ git remote set-url --push origin https://github.com/exampleuser/mirrored # Set the push location to your mirror
Comme avec un clone nu, un clone miroir inclut toutes les branches et balises distantes, mais toutes les références locales seront écrasées à chaque fois que vous récupérez, donc il sera toujours le même que le dépôt d'origine. Définir l'URL pour les poussées simplifie les poussées vers votre miroir. Pour mettre à jour votre miroir, récupérer les mises à jour et pousser, ce qui peut être automatisé en exécutant une tâche cron.
$ git fetch -p origin $ git push --mirror
Cela crée un clone du repo, mais il ne crée pas de fichier fourchette au sens de GitHub. Lorsque vous créez une fourche réelle dans GitHub, le texte "forked from exampleuser/repository-to-mirror" apparaît sous le nom de la fourche. Il montre également un arbre de tous les autres forks lorsque vous naviguez vers github.com/exampleuser/new-repository/network/members.
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.