Hai un ramo privato di un repository pubblico su GitHub?


128

Ho un progetto PHP pubblico in un repository GitHub, che contiene solo un ramo (master).

Voglio avere un ramo / fork separato privato per me (ho pagato per repository GitHub privati). Mi piacerebbe poter unire le modifiche dal ramo / fork privato al repository pubblico e viceversa.

Con questo in mente, ecco le mie domande:

  1. Posso avere un ramo privato su un repo pubblico?
  2. Posso eseguire il fork del mio repo pubblico nel mio ramo / fork privato?
  3. Se entrambe le soluzioni precedenti sono possibili, qual è la soluzione migliore? In caso contrario, come devo procedere?

1
Non è l'idea migliore di fare il fork del tuo repository pubblico come repository privato, dove crei diversi rami che non sposti (indietro) nel repository pubblico (e viceversa)?
Legolas

1
Questo è quello che sto chiedendo, voglio essere in grado di creare una copia del repository pubblico ma i miei aggiornamenti devono essere privati ​​(a meno che non voglia reinserire cose specifiche in uno pubblico)
Lizard


@assylias, potresti metterla come risposta? è la risposta migliore secondo me, e non ho prestato attenzione al tuo commento prima di trovare l'articolo da solo.
mbh86

@ mbh86 Non è proprio una risposta, essendo un collegamento, e non ho tempo per trasformarlo in una risposta. Ma se vuoi usare il contenuto di quella pagina per creare una risposta qui (con un riferimento al sito originale), potrebbe sicuramente aiutare altri utenti e riceveresti il ​​mio
voto positivo

Risposte:


69
  1. Duplica il tuo repo .
  2. Rendi privato il repository duplicato su GitHub.
  3. Clona il repository privato sulla tua macchina
  4. Aggiungi un telecomando al tuo repository pubblico (git remote add public git@github.com: ...)
  5. Invia i rami con commit destinati al tuo repository pubblico a quel nuovo telecomando pubblico. (assicurati di non eseguire il commit accidentale di codice solo privato)
  6. Puoi apportare modifiche al tuo repository pubblico utilizzando "git fetch public" e quindi unirle localmente e inviarle al tuo repository privato (origin remote).

La duplicazione funziona bene per me, anche se ho dovuto farlo nell'ordine opposto, creando prima un repository privato e quindi duplicando il repository pubblico dalla riga di comando. Grazie!
Joel

104

È possibile avere un ramo privato su un repo pubblico?

Su GitHub, il tuo repository è pubblico o privato; non è possibile "privatizzare" selettivamente solo una filiale.

Posso eseguire il fork del mio repo pubblico nel mio ramo / fork privato?

Puoi clonare il tuo repository pubblico sulla tua macchina locale, diramare se necessario, e semplicemente non spingere a monte i tuoi rami "privati" (specificando quale ramo inviare all'origine: git push origin mastero git push origin branch-i-want-to-be-public:master).

Qual è il modo migliore per andare avanti / come devo procedere?

Per sfruttare GitHub sia per il tuo sviluppo pubblico che per quello privato, suggerirei di eseguire il fork del tuo ramo pubblico all'interno di GitHub, cambiare le impostazioni del nuovo fork su "Private", e quindi clonare la versione privata sulla tua macchina locale. Quando sei pronto per rendere pubbliche le modifiche, invia tutto al tuo fork privato su GitHub e quindi usa le richieste pull per copiare selettivamente i rami nel repository pubblico.

Per rendere privato un repository su GitHub, devi avere un account aggiornato (a pagamento) . Se stai utilizzando solo l'account gratuito, puoi comunque utilizzare il primo processo che ho suggerito - clonare il pubblico sulla macchina locale, il ramo e inviare specifici rami "pubblici" all'origine - senza bisogno di un repository privato.

Se disponi di un account GitHub a pagamento o utilizzi un altro servizio che offre fork e pull request pubblici e privati ​​(come BitBucket ), puoi utilizzare uno degli approcci precedenti per rendere pubblico il tuo codice.


32
GitHub non ti consente di rendere privato un fork di un repo pubblico. Dovresti duplicare il repository per renderlo privato e quindi perderesti la connessione al repository pubblico. Mi chiedo se puoi aggiungere il repository pubblico come telecomando separato al tuo clone locale del repository privato. Quindi spingere i rami a quel telecomando.
mj1531

3
L'implicazione di ciò purtroppo è che non è possibile utilizzare richieste pull per estrarre modifiche da un "fork" privato a una copia pubblica del repository.
Michael Mior

6
GitHub ora offre repository privati ​​illimitati per account gratuiti.
Nathan F.

1
Questa in realtà non dovrebbe essere la risposta migliore dato che il flusso di lavoro consigliato (PR da un fork privato) non funziona. La risposta di @ mj1531 è un flusso di lavoro migliore.
stewSquared

3

C'è un'altra soluzione che trovo migliore in quanto non si traduce in repo duplicati sulla stessa macchina.

  • Crea un ramo con le cose che desideri private.
  • Crea un nuovo repository su GitHub, impostalo su privato.
  • Aggiungi un nuovo repository GitHub come secondo telecomando al repository sulla tua macchina.
  • Esegui il push del ramo privato sul secondo telecomando.

Il risultato finale è 1 repository con 2 telecomandi. 1 pubblico, 1 privato.
Devi solo fare attenzione a quale spingere in modo da nominare di conseguenza.


1

1.) È possibile avere un ramo privato su un repo pubblico

Da quello che so, no.

2.) Posso fare il fork del mio repo pubblico nel mio ramo privato

No, non è possibile eseguire il fork di un repo completo (rami 1-n) in un singolo ramo. Beh, in realtà potresti, se solo forzi l'unico ramo del repo completo. Basta aggiungerlo come telecomando o iniziare da un clone.

Potresti anche essere interessato a Checkout sparsi .

3.) Se entrambi i precedenti sono possibili, qual è il modo migliore per procedere

n / A

4.) Se nessuno dei due è possibile come devo procedere?

n / A

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.