Implementación del flujo de trabajo de bifurcación

Completado

Una bifurcación es una copia de un repositorio. La bifurcación de un repositorio permite experimentar con cambios libremente sin afectar al proyecto original.

Normalmente, los forks se usan para proponer cambios en un proyecto ajeno o usar un proyecto ajeno como punto de partida para tu idea.

Una bifurcación es una copia completa de un repositorio, incluidos todos los archivos, las confirmaciones y, opcionalmente, las ramas.

Las bifurcaciones son una excelente manera de admitir un flujo de trabajo de origen interno: puede crear una bifurcación para sugerir cambios cuando no tiene permiso para escribir directamente en el proyecto original. Una vez que estés listo para compartir esos cambios, es fácil contribuir con ellos utilizando solicitudes de extracción.

¿Qué hay en una bifurcación?

Una bifurcación comienza con todo el contenido de su repositorio ascendente (original). Puede incluir todas las ramas o limitarlas solo a la rama predeterminada al crear una bifurcación.

Notas importantes:

  • No se aplica ninguno de los permisos, directivas ni canalizaciones de compilación.
  • La nueva bifurcación actúa como si alguien clonase el repositorio original y, a continuación, lo insertara en un nuevo repositorio vacío.
  • Una vez creada una bifurcación, los nuevos archivos, carpetas y ramas no se comparten entre los repositorios a menos que una solicitud de incorporación de cambios (PR) los incorpore.

Uso compartido de código entre bifurcaciones

Puede crear solicitudes de incorporación de cambios en cualquier dirección: de bifurcación a ascendente o ascendente a bifurcación. El enfoque más habitual es desde la bifurcación hacia el upstream.

Los permisos, directivas, compilaciones y elementos de trabajo del repositorio de destino se aplicarán a la solicitud de extracción.

Elección entre ramas y bifurcaciones

  • Equipos pequeños (2-5 desarrolladores): se recomienda trabajar en un único repositorio. Todos deben trabajar en una rama temática y la rama principal debe protegerse con políticas de rama.

  • Equipos más grandes: a medida que su equipo crezca, es posible que esta organización se le quede pequeña y prefiera cambiar a un flujo de trabajo bifurcado.

  • Cuándo usar bifurcaciones:

    • El repositorio tiene muchos colaboradores ocasionales o poco frecuentes (como un proyecto de código abierto).
    • Solo los colaboradores principales tienen derechos de confirmación directa en el repositorio.
    • Quiere que los colaboradores externos al equipo principal trabajen desde una bifurcación.
    • Quiere aislar los cambios hasta que haya tenido la oportunidad de revisar el trabajo.

Flujo de trabajo de bifurcación

Estos son los pasos básicos para el flujo de trabajo de bifurcación:

  1. Cree una bifurcación.
  2. Clónalo localmente.
  3. Realice los cambios localmente y envíelos a una rama.
  4. Cree y complete una solicitud de incorporación de cambios en la cadena ascendente.
  5. Sincronice la bifurcación con la versión más reciente desde el repositorio ascendente.

Paso 1: Crear la bifurcación

  1. Acceda al repositorio que desea bifurcar y seleccione "Bifurcar".
  2. Especifique un nombre y elija el proyecto donde desea que se cree la bifurcación.
  3. Si el repositorio contiene muchas ramas de temas, se recomienda bifurcar solo la rama predeterminada.
  4. Elija los puntos suspensivos y a continuación, "Bifurcación" para crear la bifurcación.

Diagrama de creación de la bifurcación.

Nota

Debe tener el permiso para Crear repositorio en el proyecto elegido para crear un fork. Recomendamos crear un proyecto específico para bifurcaciones donde todos los colaboradores tengan el permiso de crear repositorio.

Paso 2: Clonar la bifurcación localmente

Una vez que la bifurcación esté lista, clónela mediante la línea de comandos o un IDE, como Visual Studio. La bifurcación será su origen remoto.

git clone {your_fork_url}
For convenience, after cloning, you'll want to add the upstream repository (where you forked from) as a remote named upstream:

```bash
git remote add upstream {upstream_url}

Paso 3: Realizar e insertar cambios

Es posible trabajar directamente en la rama principal; después de todo, esta bifurcación es la copia del repositorio. Sin embargo, se recomienda seguir trabajando en una rama de tema porque:

  • Permite mantener varias secuencias de trabajo independientes al mismo tiempo.
  • Esto reduce la confusión posterior cuando quiera sincronizar los cambios en tu bifurcación.

Realice y confirme los cambios como lo haría normalmente. Cuando haya terminado con los cambios, insértelos en el origen (la bifurcación).

Paso 4: Crear y completar una solicitud de incorporación de cambios

Abra una solicitud de extracción desde su bifurcación al repositorio ascendente. Todas las compilaciones y revisores necesarios de las directivas se aplicarán en el repositorio ascendente. Una vez que se cumplen todas las políticas, se puede completar el pull request y los cambios se convierten en una parte permanente del repositorio ascendente.

Diagrama que muestra Crear y completar una solicitud de incorporación de cambios.

Importante

Cualquier usuario con permiso para leer puede abrir un pull request al repositorio upstream. Si se configura un canalización de compilación de solicitud de extracción, la compilación se ejecutará con el código introducido en la bifurcación.

Paso 5: sincronice su bifurcación con la última versión

Cuando su solicitud de extracción sea aceptada en el upstream, querrá asegurarse de que su bifurcación refleje el estado más reciente del repositorio.

Recomendamos hacer un rebase en la rama principal de upstream (suponiendo que la principal es la rama de desarrollo principal):

git fetch upstream main
git rebase upstream/main
git push origin

Ventajas del flujo de trabajo de bifurcación

El flujo de trabajo de bifurcación le permite aislar los cambios del repositorio principal hasta que lo tenga todo listo para integrarlos. Cuando estés listo, integrar el código es tan fácil como realizar un pull request.

Este enfoque proporciona:

  • Seguridad: los cambios se aíslan hasta que se revisen.
  • Colaboración: varias personas pueden trabajar en diferentes características simultáneamente.
  • Calidad: todos los cambios pasan por el mismo proceso de revisión.
  • Flexibilidad: los colaboradores no necesitan acceso de escritura al repositorio principal.