GitHub: comment rendre privé un dépôt public?

Comment puis-je bifurquer un dépôt public, mais rendre ma bifurcation privée? J'ai l'abonnement à l'appui des dépôts privés.

184
demandé sur zer0stimulus 2012-04-08 23:00:50
la source

4 ответов

les réponses sont correctes mais ne mentionnez pas comment synchroniser le code entre le repo public et la fourchette.

voici le workflow complet (nous l'avons fait avant open sourcing React Native ):


d'abord, dupliquer la pension comme d'autres ont dit (détails ici ):

créer un nouveau repo (appelons-le private-repo ) via le GitHub UI . Puis:

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 la pension privée pour que vous puissiez y travailler:

git clone https://github.com/yourname/private-repo.git
cd private-repo
make some changes
git commit
git push origin master

Pour tirer de nouvelles hotness de la part du public repo:

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 de la repo publique plus vos changements.


enfin, pour créer une demande de pull private repo -> public repo:

la seule façon de créer une demande pull est d'avoir un accès push au repo public. C'est parce que vous devez pousser à une branche là-bas ( voici pourquoi ).

git clone https://github.com/exampleuser/public-repo.git
cd public-repo
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

maintenant il suffit de créer une demande pull via L'interface utilisateur Github pour public-repo, comme décrit ici .

une fois que les responsables du projet ont examiné votre demande de retrait, ils peuvent La fusionner.

bien sûr le tout le processus peut être répété (il suffit de laisser les étapes où vous ajoutez les télécommandes).

276
répondu Martin Konicek 2017-05-23 15:02:56
la source

il y a une option de plus maintenant (janvier-2015)

  1. Créer un nouveau repo
  2. sur l'écran repo vide il y a une option/bouton" Importer" enter image description here
  3. cliquez dessus et mettez l'url de github repo existante Il n'y a pas de mention d'option github mais cela fonctionne aussi avec Github repos. enter image description here
  4. fait
81
répondu szydan 2015-01-28 14:35:52
la source

Les réponses sont un peu en dehors de la date, afin que, pour plus de clarté:

la réponse courte est:

  1. Faire un nu clone du public des pensions.
  2. créer un nouveau privé.
  3. Faire un miroir "push le nouveau privée.

Ceci est documenté sur GitHub: la duplication d'un référentiel

32
répondu stefano 2014-12-27 02:53:46
la source

vous devez dupliquer le repo

vous pouvez voir ce doc (de github)

pour créer un duplicata d'un dépôt sans bifurcation, vous devez exécuter une commande spéciale clone contre le dépôt original et mirror-push vers le nouveau.

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 dépôt" pour plus d'information.

miroir d'un dépôt

Pour faire une copie exacte, vous devez effectuer à la fois un nu-clone et un miroir.

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 miroir un dépôt dans un autre endroit, y compris obtenir des mises à jour de l'original, vous pouvez cloner un miroir et périodiquement pousser changement.

$ 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 en miroir inclut toutes les branches et étiquettes distantes, mais toutes les références locales seront écrasées à chaque fois que vous allez chercher, donc il sera toujours le même que le dépôt original. Définir L'URL pour pushes simplifie la poussée vers votre miroir. Pour mettre à jour votre miroir, récupérez les mises à jour et push, qui peuvent être automatisées en exécutant un travail cron.

$ git fetch -p origin
$ git push --mirror

https://help.github.com/articles/duplicating-a-repository

23
répondu bsuttor 2015-03-12 16:40:29
la source

Autres questions sur