Skip to main content
Skip to content

Solución de problemas de solicitudes de incorporación de cambios apiladas

Resolver problemas comunes con pull requests apiladas, incluidos conflictos de rebase, fusiones bloqueadas, operaciones interrumpidas y problemas con la cola de fusiones.

Nota:

Esta característica está en versión preliminar pública y está sujeta a cambios.

En este artículo se tratan los problemas comunes que pueden surgir al trabajar con solicitudes de incorporación de cambios apiladas y cómo resolverlas.

Una base de datos informa de un conflicto

Cuando un rebase en cascada se encuentra con un conflicto, gh stack rebase se detiene y enumera los archivos en conflicto.

Para resolver el conflicto y continuar:

  1. Abra cada archivo en conflicto y resuelva los marcadores de conflicto (<<<<<<<, =======, >>>>>>>).

  2. Almacenar provisionalmente los archivos resueltos.

    git add .
    
  3. Continúe con el rebase. A las ramas restantes se les aplica rebase automáticamente.

    gh stack rebase --continue
    

Si el conflicto es demasiado complejo o desea empezar de nuevo, aborte el rebase para restaurar todas las ramas a su estado anterior al rebase.

gh stack rebase --abort

Sincronización detenida debido a un conflicto

Si se detecta un conflicto mientras se ejecuta gh stack sync, todas las ramas se restauran a su estado original, por lo que no se deja que nada se actualice parcialmente. Resuelva el conflicto de manera interactiva ejecutando un rebase directamente y, a continuación, envíe las ramas actualizadas.

gh stack rebase
gh stack push

Una sesión de modificación no se iniciará

gh stack modify requiere un estado de inicio limpio. Si no se inicia, confirme lo siguiente:

  • Tiene una pila activa desprotegida.
  • El árbol de trabajo está limpio.
  • No hay ninguna operación de rebase en curso.
  • No hay ninguna solicitud de extracción en cola para fusionarse.
  • El historial de confirmaciones es lineal. Si no es así, ejecute gh stack rebase primero.

Se interrumpió una sesión de modificación

Si gh stack modify se ve interrumpido, por ejemplo, por un conflicto que no desea resolver o un fallo del terminal, puede restaurar la pila al estado en el que se encontraba antes de empezar. Una instantánea de modificación previa se almacena en caché localmente para la recuperación.

gh stack modify --abort

Si se produjo un conflicto al aplicar los cambios y quiere continuar de todos modos, resuelva el conflicto, prepare los archivos con git add y, a continuación, ejecute gh stack modify --continue.

No se puede fusionar una solicitud de extracción

Una solicitud de extracción de una pila solo puede fusionarse cuando ella y todas las solicitudes de extracción que están por debajo cumplen todos los requisitos de fusión y la pila tiene un historial completamente lineal. Si la combinación está bloqueada, compruebe que:

  • La solicitud de extracción y todas las solicitudes de extracción que están por debajo de ella tienen las revisiones requeridas y han superado las comprobaciones.
  • La pila tiene un historial lineal. Si los cambios se insertan en una rama inferior o el tronco se mueven por delante, es posible que el historial ya no sea lineal.

Para restaurar un historial lineal, ejecute gh stack rebase y, a continuación, gh stack push, o haga clic en Reorganizar pila en el cuadro de fusión. Para obtener instrucciones, consulte Administración de solicitudes de incorporación de cambios apiladas.

La fusión se detuvo a mitad de la pila

Las comprobaciones previas a la combinación se ejecutan antes de cualquier combinación, pero se puede producir un error en una combinación. Por ejemplo, debido a un conflicto inesperado o a un error intermitente. Si se produce un fallo a mitad del proceso, la combinación se detiene en esa solicitud de extracción.

  • Las solicitudes de incorporación de cambios que están por debajo y se fusionaron correctamente permanecen integradas en la rama base.
  • La solicitud de incorporación de cambios que ha fallado y las solicitudes de incorporación de cambios situadas por encima de ella permanecen abiertas.

Resuelva el problema en la solicitud de extracción fallida y, a continuación, vuelva a intentar la fusión para integrar el resto de la pila.

Se eliminó una solicitud de extracción de la cola de fusión.

Las pilas se mantienen agrupadas en la cola de combinación. Si se elimina o se expulsa de la cola una solicitud de extracción, todas las solicitudes de extracción que están por encima de ella en la pila también se expulsan y se eliminan. Vuelva a añadir la pila a la cola una vez que se haya resuelto el problema subyacente.

Una pila grande también puede dividirse entre grupos de fusión consecutivos: la cola de fusión permite que un grupo de fusión supere su tamaño máximo configurado hasta en un 50 % para mantener la pila unida, y las solicitudes de extracción que no quepan continúan en los grupos posteriores hasta que se haya integrado la pila completa.

Has cerrado una pull request en medio de la pila.

Cerrar un pull request en mitad de una pila impide que todos los pull requests por encima de él se puedan fusionar. La relación de pila se conserva, por lo que para abrir una solicitud de incorporación de cambios diferente o cambiar la estructura de la pila, primero debe disolver la pila y volver a crearla.

Puede desmontar desde el GitHub sitio web o reestructurar la pila con gh stack modify. Desstacking quita solo las solicitudes de incorporación de cambios abiertas, borradores y cerradas; Las solicitudes de incorporación de cambios combinadas y en cola permanecen en la pila. Consulte Administración de solicitudes de incorporación de cambios apiladas y Administración de solicitudes de incorporación de cambios apiladas.

No se puede crear una pila entre forks

Las solicitudes de incorporación de cambios apiladas requieren que todas las ramas estén en el mismo repositorio. No se admiten pilas de bifurcación cruzada.