GitHub: come rendere privato un fork di repository pubblico?

Come posso aprire un repository pubblico, ma rendere privata la mia fork? Ho l’abbonamento per supportare i repository privati.

Le risposte sono corrette ma non menzionano come sincronizzare il codice tra il repository pubblico e il fork.

Ecco il stream di lavoro completo (lo abbiamo fatto prima di aprire l’operazione React Native ):


Innanzitutto, duplica il repository come altri hanno detto (dettagli qui ):

Crea un nuovo repository (chiamiamolo private-repo ) tramite l’ interfaccia utente di Github . Poi:

 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 

Clona il repository privato in modo da poter lavorare su di esso:

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

Per attirare nuovo entusiasmo dal repo pubblico:

 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 

Fantastico, il tuo repository privato ora ha l’ultimo codice del repository pubblico e le tue modifiche.


Infine, per creare una richiesta di pull repo privato -> repository pubblico:

L’unico modo per creare una richiesta pull è avere accesso push al repository pubblico. Questo perché devi spingere verso un ramo lì ( ecco perché ).

 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 

Ora basta creare una richiesta pull tramite l’interfaccia utente Github per il repo pubblico, come descritto qui .

Una volta che i proprietari del progetto riesaminano la tua richiesta di pull, possono unirla.

Ovviamente l’intero processo può essere ripetuto (basta lasciare fuori i passaggi in cui si aggiungono i telecomandi).

C’è un’altra opzione ora (gennaio 2015)

  1. Crea un nuovo repository privato
  2. Sulla schermata del repository vuoto c’è un pulsante / opzione “importa” inserisci la descrizione dell'immagine qui
  3. cliccalo e metti l’url github repo esistente Non c’è nessuna menzione di github, ma funziona anche con i repository di github. inserisci la descrizione dell'immagine qui
  4. FATTO

Le risposte attuali sono un po ‘obsolete quindi, per chiarezza:

La risposta breve è:

  1. Fai un clone nudo del repository pubblico.
  2. Crea un nuovo privato.
  3. Fai una spinta speculare al nuovo privato.

Questo è documentato su GitHub: duplicating-a-repository

Devi duplicare il repository

Puoi vedere questo documento (da github)

Per creare un duplicato di un repository senza fork, è necessario eseguire un comando clone speciale sul repository originale e mirror-push su quello nuovo.

Nei seguenti casi, il repository che stai cercando di spingere – come exampleuser / new-repository o exampleuser / mirrored – dovrebbe già esistere su GitHub. Vedere “Creazione di un nuovo repository” per ulteriori informazioni.

Mirroring di un repository

Per fare un duplicato esatto, devi eseguire sia un clone nudo che un mirror-push.

Apri la riga di comando e digita questi comandi:

 $ 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 

Se si desidera eseguire il mirroring di un repository in un’altra posizione, incluso il recupero degli aggiornamenti dall’originale, è ansible clonare un mirror e spingere periodicamente le modifiche.

 $ 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 

Come con un clone nudo, un clone con mirroring include tutti i rami e tag remoti, ma tutti i riferimenti locali saranno sovrascritti ogni volta che si recupera, quindi sarà sempre uguale al repository originale. L’impostazione dell’URL per i push semplifica la spinta al tuo mirror. Per aggiornare il tuo mirror, recupera gli aggiornamenti e push, che potrebbero essere automatizzati eseguendo un cron job.

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

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