No siempre puede crear una rama o extraer una rama existente y volver a ella, porque no está registrado como colaborador para ese proyecto específico.
La bifurcación no es más que un clon en el lado del servidor GitHub :
- sin la posibilidad de retroceder directamente
- con función de cola de horquilla agregada para administrar la solicitud de fusión
Mantiene una bifurcación sincronizada con el proyecto original al:
- Agregar el proyecto original como control remoto
- ir regularmente desde ese proyecto original
- recalifique su desarrollo actual sobre la rama de interés que recibió de esa búsqueda.
El rebase le permite asegurarse de que sus cambios sean sencillos (sin conflictos de fusión para manejar), lo que hace que su solicitud de extracción sea más fácil cuando desea que el responsable del proyecto original incluya sus parches en su proyecto.
El objetivo es realmente permitir la colaboració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 repositorios "centrales" ("centrales" como "visibles desde varios colaboradores).
Si puedes agregarlos directamente como colaborador para un proyecto, no necesitas administrar otro uno con un tenedor.
La experiencia de fusión sería casi la misma, pero con un nivel adicional de indirección (presione primero en la horquilla, luego solicite un tirón, con el riesgo de evoluciones en el repositorio original haciendo que sus fusiones de avance rápido ya no avancen más) .
Eso significa que el flujo de trabajo correcto es git pull --rebase upstream
(volver a basar su trabajo en la parte superior de las nuevas confirmaciones desde el inicio), y luego git push --force origin
, para reescribir el historial de tal manera que sus propias confirmaciones siempre estén por encima de las confirmaciones del repositorio original (ascendente) .
Ver también:
Aquí están las diferencias de alto nivel:
Bifurcación
Pros
Contras
Derivación
Pros
Contras
fuente
write
permisos en el repositorio.Tiene que ver con el flujo de trabajo general de Git. Es poco probable que pueda acceder directamente al repositorio del proyecto principal. No estoy seguro de si el repositorio del proyecto GitHub admite el control de acceso basado en sucursales, ya que no querrá otorgar a nadie el permiso para pasar a la rama maestra, por ejemplo.
El patrón general es el siguiente:
Sin esto, es bastante inusual que los proyectos públicos permitan que cualquiera empuje sus propios compromisos directamente.
fuente
Forking crea un repositorio completamente nuevo a partir del repositorio existente (simplemente haciendo git clone en gitHub / bitbucket)
La estrategia de sucursal crea una nueva sucursal sobre el repositorio existente / en funcionamiento
Más específico: - En los proyectos de código abierto, es el propietario del repositorio quien decide quién puede empujar al repositorio. Sin embargo, la idea del código abierto es que todos puedan contribuir al proyecto.
Este problema se resuelve con tenedores: cada vez que un desarrollador quiere cambiar algo en un proyecto de código abierto, no clona directamente el repositorio oficial. En cambio, lo bifurcan para crear una copia. Cuando finaliza el trabajo, realizan una solicitud de extracción para que el propietario del repositorio pueda revisar los cambios y decidir si fusionarlos con su proyecto.
En esencia, la bifurcación es similar a la bifurcación de características, pero en lugar de crear ramas se crea una bifurcación del repositorio, y en lugar de hacer una solicitud de fusión, se crea una solicitud de extracción.
Los siguientes enlaces proporcionan la diferencia de una manera bien explicada:
https://blog.gitprime.com/the-definitive-guide-to-forks-and-branches-in-git/
https://buddy.works/blog/5-types-of-git-workflows
http://www.continuousagile.com/unblock/branching.html
fuente