Comment puis-je bifurquer un référentiel public, mais rendre mon fork privé? J'ai l'abonnement pour prendre en charge les référentiels privés.
Les réponses sont correctes mais ne mentionnent pas comment synchroniser le code entre le dépôt public et le fork.
Voici le workflow complet (nous l'avons fait avant l'open sourcing React Native ):
Tout d'abord, dupliquez le dépôt comme d'autres l'ont dit (détails ici ):
Créez un nouveau dépôt (appelons-le private-repo
) via l' interface utilisateur de Github . Ensuite:
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 référentiel privé pour pouvoir 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 une nouvelle actualité du référentiel 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 référentiel privé dispose désormais du dernier code du référentiel public ainsi que de vos modifications.
Enfin, pour créer un dépôt privé de pull request -> repo public:
Utilisez l'interface utilisateur GitHub pour créer un fork du référentiel public (le petit bouton "Fork" en haut à droite de la page du référentiel 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 d'extraction via l'interface utilisateur Github pour public-repo, comme décrit ici .
Une fois que les propriétaires de projet ont examiné votre demande d'extraction, ils peuvent la fusionner.
Bien sûr, tout le processus peut être répété (laissez de côté les étapes où vous ajoutez des télécommandes).
git clone
qui mettra en place des branches de suivi à distance et peut-être une autre configuration dans le dépôt cloné que vous ne voulez pas vraiment. Alors qu'un clone --bare copie simplement le répertoire .git de la télécommande tel quel.git status
montre tout à jour, arbre de travail propre, peu importe ce que je change. Par conséquent, je ne peux rien engager et pousser quoi que ce soit. J'ai supprimé le nouveau dépôt privé que j'ai fait 2 fois de plus pour tenter cela, mais j'ai continué à rencontrer ce même problème. Aucune suggestion?Il y a une option de plus maintenant (janvier-2015)
la source
Les réponses actuelles sont un peu obsolètes donc, pour plus de clarté:
La réponse courte est:
Ceci est documenté sur GitHub: duplication d'un référentiel
la source
Vous devez dupliquer le repo
Vous pouvez voir ce document (depuis github)
https://help.github.com/articles/duplicating-a-repository
la source
GitHub a maintenant une option d'importation qui vous permet de choisir ce que vous voulez que votre nouveau référentiel importé soit public ou privé
la source