2011-11-02 13 views
65

Tengo un proyecto PHP público en un repositorio GitHub, que contiene solo una rama (principal).Tener una sucursal privada de un repositorio público en GitHub?

Quiero tener una bifurcación/bifurcación separada que sea privada para mí (he pagado repositorios privados de GitHub). Me gustaría poder fusionar los cambios de la bifurcación privada al bursátil, y viceversa.

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

  1. ¿Puedo tener una rama privada en un acuerdo de recompra pública?
  2. ¿Puedo cambiar mi reserva pública a mi propia sucursal/tenedor privado?
  3. Si ambos de los anteriores son posibles, ¿cuál es la mejor manera de avanzar? Si ninguno, ¿cómo debo proceder?
+1

¿No es la mejor idea bifurcar su depósito público como un repositorio privado, donde crea varias ramas que no empuja (retrocede) al depósito público (y viceversa)? – Legolas

+0

Eso es lo que estoy pidiendo, quiero poder crear una copia del repositorio público, pero mis actualizaciones son privadas (a menos que quiera enviar cosas específicas al público) – Lizard

+0

http://24ways.org/2013/ keeping -parts-of-your-codebase-private-on-github/ – assylias

Respuesta

66

¿Es posible tener una rama privada en un acuerdo de recompra pública?

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

¿Puedo cambiar mi reserva pública a mi propia sucursal/tenedor privado?

Puede clonar tu repositorio público a su máquina local, rama, según sea necesario, y simplemente no empujar sus ramas "privadas" aguas arriba (especificando el que rama de empujar al origen: git push origin master o git push origin branch-i-want-to-be-public:master).

¿Cuál es la mejor manera de proceder/cómo debo proceder?

Con el fin de tomar ventaja de GitHub, tanto para su desarrollo público y privado, sugeriría que se bifurcan su sucursal público dentro de GitHub, cambiando la configuración del nuevo tenedor a "privado", y luego clonar la versión privada hasta tu máquina local. Cuando esté listo para hacer cambios públicos, empuje todo a su bifurcación privada en GitHub y luego use pull requests para copiar selectivamente las sucursales al repositorio público.

Para hacer que un repositorio sea privado en GitHub, debe tener una cuenta actualizada (pago). Si solo está moviendo la cuenta gratuita, puede seguir utilizando el primer proceso que sugerí — clonar público a la máquina local, rama y empujar ramas "públicas" específicas al origen — sin necesidad de un repositorio privado.

Si tiene una cuenta de GitHub pagada, o está utilizando otro servicio que ofrece forks y solicitudes de extracción públicas y privadas (como BitBucket), puede utilizar cualquiera de los métodos anteriores para hacer público su código.

+15

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 las ramas a ese control remoto. – mj1531

+0

Acabo de probarlo. ¡Funciona! – mj1531

+0

La consecuencia de esto, lamentablemente, es que no es posible usar las solicitudes de extracción para extraer los cambios de una "bifurcación" privada a una copia pública del depósito. –

1

1.) ¿Es posible tener una rama privada en un acuerdo de recompra pública

Por lo que sé, no.

2.) ¿Puedo tenedor mi propio repo pública en mi propia rama privada

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

También te puede interesar Sparse checkouts.

3.) Si tanto el por encima de la cual son posibles es el mejor camino a seguir

n/a

4.) Si ni son posibles ¿Cómo debo proceder?

n/a

24
  1. Duplicate your repo.
  2. Haga que el repositorio duplicado sea privado en GitHub.
  3. Clonar el repositorio privado a su máquina
  4. Añadir un control remoto para tu repositorio público (GIT añadir a distancia [email protected] pública: ...)
  5. ramas Push con compromete a los destinados a tu repositorio público para que la nueva control remoto público (asegúrese de no cometer accidentalmente código privado)
  6. Puede traer cambios a su repositorio público usando 'git fetch public' y luego combinarlos localmente y enviarlos a su repositorio privado (control remoto de origen).
+0

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 desde la línea de comandos. ¡Gracias! – Joel

Cuestiones relacionadas