¿Cuál es la diferencia entre bifurcar y clonar en GitHub?

Resuelto Steve Dunn asked hace 13 años • 9 respuestas

Me gustaría saber las diferencias entre hacer un Fork de un proyecto y hacer una parte clonedel mismo.

¿Solo puedo enviar solicitudes de extracción a través de GitHub si he bifurcado un proyecto?

Steve Dunn avatar Aug 14 '11 20:08 Steve Dunn
Aceptado

Cuando dices que estás bifurcando un repositorio, básicamente estás creando una copia del repositorio con tu ID de GitHub. El punto principal a tener en cuenta aquí es que cualquier cambio realizado en el repositorio original se reflejará en sus repositorios bifurcados (debe buscar y cambiar la base). Sin embargo, si realiza algún cambio en su repositorio bifurcado , deberá crear explícitamente una solicitud de extracción al repositorio original . Si su solicitud de extracción es aprobada por el administrador del repositorio original , sus cambios se confirmarán/fusionarán con el código base original existente. Hasta entonces, sus cambios se reflejarán sólo en la copia que bifurcó .

En breve:

El modelo Fork & Pull permite que cualquiera pueda bifurcar un repositorio existente y enviar cambios a su bifurcación personal sin necesidad de que se le otorgue acceso al repositorio de origen. Luego, el responsable del proyecto debe introducir los cambios en el repositorio de origen.

Tenga en cuenta que después de la bifurcación puede clonar su repositorio (el que está bajo su nombre) localmente en su máquina. Realice cambios en él y envíelo a su repositorio bifurcado. Sin embargo, para reflejar sus cambios en el repositorio original, su solicitud de extracción debe ser aprobada.

Un par de otras discusiones interesantes:

¿Las bifurcaciones de git son en realidad clones de git?

¿Cómo actualizo un repositorio bifurcado de GitHub?

Aniket Thakur avatar Nov 19 '2013 11:11 Aniket Thakur

Básicamente sí. A forkes solo una solicitud para que GitHub clone el proyecto y lo registre con su nombre de usuario ; GitHub también realiza un seguimiento de la relación entre los dos repositorios, para que puedas visualizar las confirmaciones y extracciones entre los dos proyectos (y otras bifurcaciones).

Aún puedes solicitar que las personas extraigan datos de tu repositorio clonado, incluso si no lo utilizas fork, pero tendrás que encargarte de ponerlo a disposición del público tú mismo. O envíe parches a los desarrolladores (ver git format-patch) que puedan aplicar a sus árboles.

michel-slm avatar Aug 14 '2011 13:08 michel-slm
  • El proyecto bifurcado está en su repositorio en línea (repo).
  • El proyecto clonado está en su máquina local (normalmente clono después de bifurcar el repositorio).

Puede confirmar en su repositorio en línea (o confirmar en su repositorio local y luego enviarlo a su repositorio en línea) y luego enviar una solicitud de extracción.

El director del proyecto puede aceptarlo para obtener los cambios en su versión principal en línea.

Alisa avatar Apr 30 '2015 21:04 Alisa

Un clon es donde tienes una duplicación y separación adecuada entre dos versiones (posiblemente diferentes) de un repositorio. Cuando se modifica un repositorio, el nuevo contenido debe copiarse activamente en el otro repositorio mediante un comando push. Y se obtuvieron cambios en el otro repositorio.

Cuando bifurcas un repositorio, en un servidor, no hay necesidad de duplicar el contenido porque ambos repositorios usarán el mismo contenido [objeto fijo] de ese mismo servidor. El 'truco' está en gestionar los diferentes puntos de vista de los usuarios para que cada usuario crea que tiene una copia personal completa del repositorio. Empujar y buscar entre bifurcaciones simplemente actualiza los punteros del usuario.

En un nivel inferior, git hace lo mismo internamente. Si tiene tres archivos diferentes, cada uno de los cuales contiene Hello World, entonces git simplemente 'bifurca' su única copia del blob Hello World y la ofrece en cada uno de los tres lugares según sea necesario.

La capacidad de bifurcarse en el servidor significa que la gran asignación de almacenamiento de Github no es tan grande en promedio, ya que todos comparten un único repositorio subyacente.

Philip Oakley avatar Aug 14 '2011 15:08 Philip Oakley