Resolución de conflictos de combinación en Visual Studio

Al fusionar una rama con otra mediante combinación ("merge"), los cambios de archivo de las confirmaciones ("commit") de una rama pueden entrar en conflicto con los cambios de la otra rama. Git intenta resolver estos cambios mediante el historial del repositorio para determinar el aspecto que deben tener los archivos combinados. Cuando no está claro cómo combinar los cambios, Git detiene la combinación e indica qué archivos entran en conflicto.

Evitar conflictos de fusión mediante combinación

Git resulta óptimo para fusionar mediante combinación los cambios de archivo automáticamente en la mayoría de los casos, siempre y cuando el contenido del archivo no cambie drásticamente entre los commits. Si su rama está muy por detrás de la rama principal, considere la posibilidad de fusionar las ramas mediante cambio de base ("rebase") antes de abrir una solicitud de incorporación de cambios ("pull request"). Las ramas fusionadas mediante cambio de base se fusionarán mediante combinación en la rama principal sin conflictos.

Resolución de conflictos de combinación

  • Si colabora con otros usuarios en la misma rama, puede que observe conflictos de fusión mediante combinación al enviar los cambios ("push").

    Captura de pantalla de un conflicto de fusión mediante combinación (

  • Visual Studio detecta si la rama local en la que ha estado trabajando está detrás de la rama de seguimiento remoto y, a continuación, le ofrece opciones para elegir.

    Captura de pantalla de las opciones disponibles cuando la rama local está detrás de la rama remota.

    Nota:

    Si el repositorio remoto admite la opción Forzar envío de cambios, puede habilitarlo mediante Git>Configuración.

    En este ejemplo, seleccione Incorporar y enviar cambios para incluir los cambios introducidos en el repositorio remoto. Si hay conflictos de fusión mediante combinación al incorporar cambios o al intentar fusionar mediante combinación dos ramas, Visual Studio le permite saberlo en la ventana Cambios de Git, en la ventana Repositorio de Git y en los archivos que presenten conflictos.

    Captura de pantalla de una notificación de conflicto de fusión mediante combinación.

  • La ventana Cambios de GIT muestra una lista de archivos con conflictos en Cambios sin fusionar. Para empezar a resolver conflictos, haga doble clic en uno de los archivos. Si tiene un archivo con conflictos abiertos en el editor, también puede seleccionar Abrir el Editor de combinación.

    Captura de pantalla del estado del conflicto de fusión mediante combinación en la ventana Cambios de GIT.

  • En el Editor de combinación, empiece a resolver el conflicto mediante cualquiera de los métodos siguientes (como se muestra en la captura de pantalla numerada):

    1. Vaya a los conflictos, línea por línea, y elija entre mantener la parte derecha o la parte izquierda con la selección de las casillas correspondientes.

      O bien

    2. Seleccione el botón Tomar entrantes (o presione F10) para aceptar todos los cambios entrantes o el botón Tomar actuales (o presione F11) para mantener la versión actual de todos los cambios en conflicto. Puede hacer lo mismo si selecciona una de las casillas situadas en la parte superior de cualquier marco en paralelo.

      O bien

    3. Edite el código manualmente en la ventana Resultado.

    Captura de pantalla que muestra cómo resolver un conflicto de fusión mediante combinación en Visual Studio 2022.

    Sugerencia

    Si no le gusta el diseño predeterminado en el Editor de combinación, no dude en cambiarlo mediante el menú desplegable del engranaje.

    Captura de pantalla de las opciones de diseño del Editor de combinación.

    Por ejemplo, en la captura de pantalla siguiente se muestra el aspecto de la vista vertical:

    Captura de pantalla de la vista vertical en la interfaz de usuario del Editor de combinación.

  • Cuando haya terminado de resolver los conflictos de fusión mediante combinación, seleccione Aceptar "merge". Repita este proceso para todos los archivos en conflicto.

    Captura de pantalla de la acción Aceptar

  • Use la ventana Cambios de GIT para crear una confirmación de fusión mediante combinación ("merge commit") y resolver el conflicto.

    Captura de pantalla de cómo crear una confirmación de fusión mediante combinación mediante la ventana Cambios de GIT.

    Nota:

    Si quiere mantener todos los cambios en un archivo, puede hacer clic con el botón derecho en este en la sección Cambios sin combinar y seleccionar Mantener actual (local) sin tener que abrir el Editor de combinación.

    Captura de pantalla de la opción de menú Mantener actual.

Sugerencia

Para obtener más información sobre las opciones de accesibilidad disponibles, consulte la sección Métodos abreviados de teclado de Git de la página Sugerencias y trucos de accesibilidad de Visual Studio.

Configuración de la herramienta de comparación

Si estableces el archivo .gitconfig para que use una herramienta de comparación de terceros como BeyondCompare o KDiff3, Visual Studio lo respeta. En los casos en los que Visual Studio mostraría normalmente una comparación, se abrirá una ventana independiente en la herramienta que prefieras. Para obtener un ejemplo, consulta esta pregunta de StackOverflow.