Resolución de conflictos

Se produce un conflicto cuando se realizan cambios en el mismo elemento tanto en el área de trabajo como en el repositorio Git remoto. Cuando se produce un conflicto, el estado de Git indica Conflicto y Confirmación está deshabilitado.

Captura de pantalla de un informe con un estado Git que dice conflicto.

Cuando seleccione Actualizar en caso de conflictos, un mensaje le notifica que necesita resolver los conflictos para poder actualizarlos.

Captura de pantalla del mensaje de error de la pestaña de control de código fuente que informa de los conflictos.

Puede resolver un conflicto de tres maneras:

Resolver conflictos en la interfaz de usuario

Seleccione Actualizar todo para visualizar una lista de todos los elementos que tienen conflictos. A continuación, seleccione la versión de cada elemento que desea mantener. Para cada elemento en conflicto, puede aceptar los cambios entrantes del repositorio de Git o mantener la versión actual que se encuentra en el área de trabajo.

Captura de pantalla de la interfaz de usuario para seleccionar qué versión de cada elemento en conflicto desea conservar.

  • Seleccione Aceptar cambios entrantes para invalidar los cambios en el área de trabajo. Los cambios del área de trabajo se pierden y el estado de Git cambia a sincronizado si se importa correctamente.

Nota:

La aceptación de cambios entrantes invalidará el elemento actual en el área de trabajo.

  • Seleccione Mantener el contenido actual para mantener la versión actual en el área de trabajo. Una vez completada la actualización, el estado de Git se convierte en cambio pendiente de confirmación porque los cambios en el área de trabajo aún no se han confirmado en la rama.

Revertir a un estado anterior

Puede revertir el área de trabajo entera o la rama Git a su estado de última sincronización. Si revierte la rama de Git a una confirmación anterior, todavía podrá ver los cambios realizados en la rama no sincronizada. Si revierte el área de trabajo, todos los cambios realizados en el área de trabajo desde la última confirmación se perderán.

Para revertir al estado sincronizado anterior, realice uno de los siguientes pasos:

  • Utilice el comando Deshacer para devolver los elementos en conflicto del área de trabajo a su último estado sincronizado.
  • Volver al último estado sincronizado en Git mediante el comando git revert en Azure DevOps.

También puede resolver conflictos desconectando y volviendo a conectar el área de trabajo. Cuando vuelva a conectarse, seleccione la dirección que desea sincronizar. Sin embargo, tenga en cuenta que cuando se vuelve a conectar, se sobrescriben todos los elementos del área de trabajo o de la rama y no solo los que están en conflicto. No devuelve el área de trabajo ni la rama al último estado sincronizado. En su lugar, sobrescribe todo el contenido de una localización con el contenido de la otra.

Resolución de conflictos en git

Si no está seguro de qué cambios se hicieron y qué versión elegir y no quiere volver a un estado anterior, puede intentar resolver el conflicto en el repositorio Git creando una nueva rama, resolviendo el conflicto en esa rama y sincronizándola con la actual.

Nota:

Solo el administrador del área de trabajo puede volver a conectar el área de trabajo a la nueva rama.

  1. En el panel Control de código fuente, consulte una nueva rama con el id. de la última rama sincronizada que aparece en la parte inferior de la pantalla.

    Captura de pantalla que muestra cómo extraer una nueva rama desde el panel de control de código fuente haciendo clic en la flecha hacia abajo.

    Captura de pantalla de la información de ID de la sucursal que se muestra en la parte inferior de la pantalla.

    En este paso se crea una nueva rama a partir de la rama en conflicto mediante el último estado de Git sincronizado, antes de que alguien realizara cambios que entraran en conflicto con los cambios realizados por usted. Puede ver los cambios en el panel Control de código fuente, pero no hay nada que actualizar desde la rama de Git. La rama de checkout mantiene el estado actual del área de trabajo, por lo que los cambios sin confirmar se conservan al cambiar de rama.

  2. Realice los cambios en la nueva rama. Esta nueva rama ahora tiene los cambios que hiciste a los elementos conectados a una versión anterior de la rama Git que no entra en conflicto con tus cambios.

  3. En git, resuelva los conflictos entre la rama original y la nueva rama.

  4. En git, combine la nueva rama en la rama original

  5. En Fabric, cambie el área de trabajo de nuevo a la rama original.