Bifurcando vs Branching en GitHub

Me gustaría saber más sobre las ventajas y desventajas de bifurcar un proyecto github vs. crear una twig de un proyecto github.

Bifurcar hace que mi versión del proyecto esté más aislada de la original porque no tengo que estar en la list de queueboradores del proyecto original. Dado que estamos desarrollando un proyecto en casa, no hay ningún problema en agregar personas como queueboradores. Pero, nos gustaría entender si la realización de un proyecto dificultaría la fusión de los cambios al proyecto principal. Es decir, me pregunto si la bifurcación facilita la synchronization de los dos proyectos. En otras palabras, ¿es más fácil fusionar e impulsar los cambios entre mi versión del proyecto principal y el proyecto principal cuando me suscribo?

No siempre se puede crear una sucursal o extraer una sucursal existente y volver a ella, porque no está registrado como queueborador para ese proyecto específico.

Forking no es más que un clon en el lado del server GitHub :

  • sin posibilidad de retroceder directamente
  • con la function de queue de horquilla agregada para administrar la request de fusión

Mantiene un tenedor sincronizado con el proyecto original al:

  • agregando el proyecto original como un control remoto
  • obteniendo regularmente de ese proyecto original
  • rebase su desarrollo actual en la parte superior de la twig de interés que recibió actualizada de esa búsqueda.

La rebase le permite asegurarse de que los cambios sean directos (no hay conflicto de fusión que manejar), haciendo que su request de extracción sea más fácil cuando desee que el mantenedor del proyecto original incluya sus parches en su proyecto.

El objective es realmente permitir la queueboración, aunque la participación directa no siempre es posible.


El hecho de que clones en el lado de GitHub significa que ahora tienes dos repositorys "centrales" ("centrales" como "visibles de varios queueboradores").
Si puede agregarlos directamente como queueborador para un proyecto, no necesita administrar otro con un tenedor.

tenedor en GitHub

La experiencia de fusión sería más o less igual, pero con un nivel adicional de indirección (presiona primero en la horquilla, luego pide un tirón, con el riesgo de evoluciones en el repository original haciendo que tus fusiones rápidas no avancen más) .
Eso significa que el flujo de trabajo correcto es git pull --rebase upstream (rebase su trabajo sobre las nuevas confirmaciones desde el upstream), y luego git push --force origin , con el fin de reescribir el historial de tal manera que sus propios commits sean siempre además de los compromisos del repository original (ascendente).

Ver también:

  • Git tenedor es git clone?
  • Extraiga nuevas actualizaciones del repository original de Github en el repository Github bifurcado

Tiene que ver con el flujo de trabajo general de Git. Es poco probable que pueda enviar directamente al repository del proyecto principal. No estoy seguro de si el repository del proyecto GitHub admite el control de acceso basado en sucursales, ya que no le gustaría otorgar permiso a nadie para enviarlo a la sucursal principal, por ejemplo.

El patrón general es el siguiente:

  • Bifurque el repository del proyecto original para tener su propia copy de GitHub, a la que podrá aplicar los cambios.
  • Clona tu repository de GitHub en tu máquina local
  • Opcionalmente, agregue el repository original como un repository remoto adicional en su repository local. A continuación, podrá get cambios publicados en ese repository directamente.
  • Realice sus modificaciones y sus propios commits localmente.
  • Introduzca sus cambios en su repository de GitHub (ya que generalmente no tendrá los permissions de escritura en el repository del proyecto directamente).
  • Póngase en contacto con los responsables del proyecto y pídales que busquen los cambios y la revisión / fusión, y que los devuelvan al repository del proyecto (si usted y ellos lo desean).

Sin esto, es bastante inusual que los proyectos públicos permitan a cualquiera impulsar sus propios compromisos directamente.

Estas son las diferencias de alto nivel:

Bifurcación

Pros

  • Mantiene las twigs separadas por usuario
  • Reduce el desorder en el repository principal
  • El process de su equipo refleja el process del contribuyente externo

Contras

  • Hace que sea más difícil ver todas las twigs que están activas (o inactivas, para el caso)
  • Colaborar en una sucursal es más complicado (el propietario de la horquilla necesita agregar a la persona como queueborador)
  • Debes entender el concepto de controles remotos múltiples en Git
    • Requiere contabilidad mental adicional
    • Esto hará que el flujo de trabajo sea más difícil para las personas que no están súper cómodas con Git.

Derivación

Pros

  • Mantiene todo el trabajo hecho alnetworkingedor de un proyecto en un solo lugar
  • Todos los queueboradores pueden presionar a la misma twig para queueborar en ella
  • Solo hay un control remoto Git para tratar

Contras

  • Las twigs que se abandonan pueden acumularse más fácilmente
  • El process de contribución de su equipo no coincide con el process del contribuyente externo
  • Necesita agregar miembros del equipo como contribuyentes antes de que puedan twig