Resolución de conflictos de solicitudes de extracción

Resumen

Este artículo explica las razones detrás de los conflictos en las Pull Requests y los escenarios comunes en los que ocurren. También proporciona instrucciones detalladas paso a paso para revisar y resolver estos conflictos de manera efectiva.

¿Qué causa un conflicto en una Pull Request?

Un conflicto en una Pull Request puede ocurrir cuando dos ramas tienen commits que afectan la misma línea de código y la Pull Request no puede determinar automáticamente qué línea conservar. Para ilustrar cómo puede suceder esto, vea el diagrama a continuación.

En este ejemplo, branch_b se crea a partir de branch_a. A continuación, se realiza un cambio que afecta a la myName función y se comete en branch_b, y se comete un cambio diferente en la función en branch_a. Cuando se crea una Pull Request para fusionar branch_b en branch_a, la pull request detecta que la misma línea de código ha cambiado en ambas ramas, lo que da lugar a un conflicto. En la sección siguiente verá dos opciones diferentes para resolver el conflicto.

¿Cómo resolver un conflicto en una Pull Request?

Cuando una Pull Request encuentra un conflicto, puede resolverlo conservando o sobrescribiendo los cambios del destino. Para múltiples conflictos, aborde cada uno por separado usando el método más adecuado; está bien usar enfoques diferentes para distintos conflictos.

chevron-rightConservar los cambios del destinohashtag

Para resolver conflictos mediante este método, comete las líneas en conflicto desde la rama destino a la rama origen. Vea el diagrama para una ilustración y consulte las instrucciones paso a paso proporcionadas en la Resolución de conflictos de solicitudes de extracción sección a continuación.

circle-info

Este método utiliza la función Resolver conflictos en una Pull Request para comitear automáticamente los cambios en la rama origen.

chevron-rightSobrescribir los cambios del destinohashtag

Para resolver conflictos mediante este método, comete las líneas en conflicto desde la a la destino rama rama origen. Vea el diagrama para una ilustración y consulte las instrucciones paso a paso proporcionadas en la Resolución de conflictos de solicitudes de extracción sección a continuación.

circle-info

Este método requiere que usted comitee manualmente los cambios desde la a la destino rama rama.

Resolviendo conflictos

1

Conflictos en Pull Requests

Cuando se crea una Pull Request, se ejecuta inicialmente una verificación de conflictos. Si se encuentran conflictos entre las Destino y Origen ramas, se mostrará una advertencia y debe resolver los conflictos antes de que la Pull Request pueda fusionarse.

2

Revisar conflictos

  1. Haz clic en Resolver conflictos.

  2. Haga clic en un componente para ver los conflictos.

circle-exclamation
  1. Revise el código en conflicto en el componente y determine cómo resolver el conflicto.

circle-info

Consulta la Resolución de conflictos de solicitudes de extracción sección anterior para una explicación de los conflictos en las Pull Requests.

  1. Hay dos formas de resolver un conflicto en una Pull Request. Vea las secciones siguientes para obtener instrucciones sobre cómo realizar cada una.

    1. Conservar los cambios del destino: Este método conserva el código del destino al comitear las líneas en conflicto desde la rama destino a la rama.

    2. Sobrescribir los cambios del destino: Este método conserva el código del origen al comitear las líneas en conflicto desde la a la rama a la rama rama.

circle-info

Para múltiples conflictos, aborde cada uno por separado usando el método más adecuado; está bien usar enfoques diferentes para distintos conflictos.

3

Conservar los cambios del destino

Este método utiliza la Resolver conflictos función integrada en una Pull Request.

  1. Haga clic en un componente con conflictos para resolverlo.

  2. Haz clic en Aceptar todo para conservar todas las líneas, o haga clic en la Flecha Derecha por cada línea que desea conservar. Esto copia la línea seleccionada desde la rama destino a la rama origen.

  3. Una vez que se hayan realizado todos los cambios necesarios en la rama origen, haga clic en Resolver. Esto marca un componente como Resuelto para que pueda llevar un registro de sus cambios.

  4. Haz clic en Atrás.

circle-info

Repita este proceso para todos los componentes con conflictos.

  1. Una vez que todos los componentes estén marcados como Resuelto, haga clic en Resolver conflictos.

  2. Introduce un Mensaje de commit.

  3. Haz clic en Resolver.

  4. Después de resolver los conflictos, la Pull Request volverá a comprobar si hay conflictos.

  5. Si no hay más conflictos, el mensaje de la Pull Request estará en verde y dirá "Esta rama se puede fusionar".

circle-info

Si los conflictos persisten en la Pull Request, revíselos y resuélvalos. Repita hasta que todos los problemas estén resueltos.

4

Sobrescribir los cambios del destino

Este método requiere editar y commitear manualmente los cambios en la rama destino.

circle-info

Para que sea más fácil resolver conflictos al sobrescribir cambios en la rama destino, anote las líneas y componentes específicos que causan conflictos mientras revisa la Pull Request.

  1. Haz clic en Código desde el menú de la barra lateral izquierda.

  2. Haz clic en la rama rama de la Pull Request.

  3. Haz clic en la Tres puntos verticales en el extremo derecho de un componente con conflictos en la Pull Request.

  4. Haz clic en Editar.

  5. Edite la(s) línea(s) de código en conflicto para que coincidan con la a la rama.

  6. Haz clic en Cometer cambios.

  7. Introduce un Mensaje de commit.

  8. Haz clic en Confirmar.

circle-info

Repita este proceso para todos los componentes con conflictos.

  1. Una vez que todos los componentes con conflictos estén editados para coincidir con la a la rama, vuelva a la Pull Request.

  2. Haz clic en Solicitudes de extracción desde el menú de la barra lateral izquierda.

  3. Haga clic en la Pull Request para comprobar si todos los conflictos están resueltos.

  4. Si no hay más conflictos, el mensaje de la Pull Request estará en verde y dirá "Esta rama se puede fusionar".

circle-info

Si los conflictos persisten en la Pull Request, revíselos y resuélvalos. Repita hasta que todos los problemas estén resueltos.

Última actualización

¿Te fue útil?