¿Tener una sucursal privada de un repositorio público en GitHub?


127

Tengo un proyecto público de PHP en un repositorio de GitHub, que contiene solo una rama (maestra).

Quiero tener una sucursal / bifurcación separada que sea privada para mí (he pagado por repositorios privados de GitHub). Me gustaría poder fusionar los cambios de la bifurcación / bifurcación privada al repositorio público, y viceversa.

Con eso en mente, aquí están mis preguntas:

  1. ¿Puedo tener una sucursal privada en un repositorio público?
  2. ¿Puedo bifurcar mi propio repositorio público en mi propia bifurcación / sucursal privada?
  3. Si ambos de los anteriores son posibles, ¿cuál es el mejor camino a seguir? Si ninguno de los dos, ¿cómo debo proceder?

1
¿No es la mejor idea bifurcar su repositorio público como un repositorio privado, donde crea varias ramas que no empuja (hacia atrás) al repositorio público (y viceversa)?
Legolas

1
Eso es lo que pido, quiero ser capaz de crear una copia de recompra pública pero mis actualizaciones sean privadas (a menos que quiera llevar las cosas específicas de nuevo a uno público)
Lizard


@assylias, ¿podrías decirlo como respuesta? Es la mejor respuesta en mi opinión, y no presté atención a tu comentario antes de encontrar el artículo.
mbh86

@ mbh86 No es realmente una respuesta, es un enlace, y no tengo tiempo para convertirla en una respuesta. Pero si desea utilizar el contenido de esa página para crear una respuesta aquí (con una referencia al sitio original), sin duda podría ayudar a otros usuarios y obtendría mi
voto a favor

Respuestas:


69
  1. Duplica tu repositorio .
  2. Haga que el repositorio duplicado sea privado en GitHub.
  3. Clona el repositorio privado en tu máquina
  4. Agregue un control remoto a su repositorio público (git remote add public git@github.com: ...)
  5. Empuje ramas con commits destinados a su repositorio público a ese nuevo control remoto público. (asegúrese de no cometer accidentalmente código solo privado)
  6. Puede introducir cambios en su repositorio público utilizando 'git fetch public' y luego combinarlos localmente y empujar a su repositorio privado (origen remoto).

La duplicación funciona bien para mí, aunque tuve que hacerlo en el orden opuesto, primero creando un repositorio privado y luego duplicando el repositorio público allí desde la línea de comandos. ¡Gracias!
Joel

104

¿Es posible tener una sucursal privada en un repositorio público?

En GitHub, su repositorio es público o privado; no se puede "privatizar" selectivamente solo una sucursal.

¿Puedo bifurcar mi propio repositorio público en mi propia bifurcación / sucursal privada?

Puede clonar su repositorio público en su máquina local, bifurcar según sea necesario, y simplemente no empujar sus bifurcaciones "privadas" en sentido ascendente (especificando qué bifurcación empujar al origen: git push origin mastero git push origin branch-i-want-to-be-public:master).

¿Cuál es el mejor camino a seguir / cómo debo proceder?

Para aprovechar GitHub tanto para su desarrollo público como privado, sugeriría bifurcar su rama pública dentro de GitHub, cambiar la configuración de la nueva bifurcación a "Privada" y luego clonar la versión privada en su máquina local. Cuando esté listo para hacer cambios públicos, coloque todo en su bifurcación privada en GitHub y luego use las solicitudes de extracción para copiar selectivamente las ramas al repositorio público.

Para que un repositorio sea privado en GitHub, debe tener una cuenta actualizada (pagada) . Si solo está balanceando la cuenta gratuita, aún puede usar el primer proceso que sugerí: clonar público a máquina local, sucursal e impulsar sucursales "públicas" específicas al origen , sin necesidad de un repositorio privado.

Si tiene una cuenta paga de GitHub, o está utilizando otro servicio que ofrece tenedores públicos y privados y solicitudes de extracción (como BitBucket ), puede usar cualquiera de los enfoques anteriores para hacer público su código.


32
GitHub no le permite hacer una bifurcación de un repositorio público privado. Tendría que duplicar el repositorio para hacerlo privado, y luego perdería la conexión con el repositorio público. Me pregunto si puede agregar el repositorio público como un control remoto separado a su clon local del repositorio privado. Luego empuje ramas a ese control remoto.
mj1531

3
Lamentablemente, esto implica que no es posible utilizar solicitudes de extracción para extraer los cambios de un "tenedor" privado a una copia pública del repositorio.
Michael Mior

66
GitHub ahora ofrece repositorios privados ilimitados para cuentas gratuitas.
Nathan F.

1
Esta realmente no debería ser la respuesta principal dado que el flujo de trabajo recomendado (PR desde una bifurcación privada) no funciona. La respuesta de @ mj1531 es un mejor flujo de trabajo.
stewSquared

2

Hay otra solución que encuentro mejor ya que no da como resultado repositorios duplicados en la misma máquina.

  • Haz una rama con las cosas que quieres en privado.
  • Haga un nuevo repositorio en GitHub, configúrelo como privado.
  • Agregue un nuevo repositorio de GitHub como segundo control remoto a su repositorio en su máquina.
  • Empuje la rama privada al segundo control remoto.

El resultado final es 1 repositorio con 2 controles remotos. 1 público, 1 privado.
Solo necesita tener cuidado con lo que presiona para nombrar en consecuencia.


1

1.) ¿Es posible tener una sucursal privada en un repositorio público?

Por lo que sé, no.

2.) ¿Puedo bifurcar mi propio repositorio público en mi propia sucursal privada?

No, no puede bifurcar un repositorio completo (1-n ramas) en una sola rama. Bueno, en realidad podrías, si solo bifurcas la única rama del repositorio completo. Simplemente agréguelo como control remoto o comience desde un clon.

También te pueden interesar los pagos escasos .

3.) Si los dos anteriores son posibles, ¿cuál es el mejor camino a seguir?

n / A

4.) Si ninguno de los dos es posible, ¿cómo debo proceder?

n / A

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.