Resolución de conflictos
Pasos anteriores
Antes de leer la documentación sobre resolución de conflictos, debes elegir un esquema de versionado para tu proyecto y leer la documentación sobre Integración .
Al integrar dos ramas, Git compara sus diferencias con respecto al ancestro de confirmación común. Un conflicto se genera cuando detecta que las mismas líneas de un mismo fichero han sido modificadas en ambas ramas, y no puede decidir automáticamente con cuál quedarse.
Cuantas más ramas y desarrolladores trabajen en paralelo, más probable es que surjan conflictos, por lo que la herramienta necesitará de tu intervención para resolver ambigüedades en los cambios.
Importante
Al resolver conflictos en Studio, en lugar de elegir un cambio sobre otro en una entidad, se sustituye toda la entidad de origen o destino. Por ejemplo, si modificamos la misma pantalla en ambas ramas, al resolver el conflicto seleccionando la fuente, la pantalla de destino se descarta y se sustituye por la pantalla de origen en su totalidad.
Cómo detectar el origen de un conflicto
Studio muestra los archivos implicados en un conflicto y detalla la acción realizada en cada rama: si se ha añadido un archivo (+), se ha eliminado (-) o se ha editado (icono de lápiz). Sin embargo, cuando un archivo se ha editado en ambas ramas, Studio no permite ver los cambios específicos realizados en cada rama.
Para revisar en detalle lo que ha cambiado en cada rama y tomar una mejor decisión sobre cómo resolver el conflicto, es necesario utilizar herramientas externas a Studio. En este caso, se sugiere utilizar GitLab e IntelliJ (aunque se puede utilizar cualquier otro IDE).
Sigue estos pasos:
Inicia sesión en GitLab (puedes utilizar el acceso directo de Studio Go to GitLab).
Clona el repositorio localmente.
Abre el proyecto en IntelliJ.
Replica el merge request que estás intentando realizar en Studio.
Revisa los archivos en conflicto y analice las diferencias línea por línea.
A continuación, con este análisis realizado, resuelve el conflicto en Studio. Lee cada guía de estándares de resolución de conflictos para saber cómo proceder en función de tu escenario de integración.
Estándares generales para la resolución de conflictos
Estos estándares de resolución de conflictos están diseñados para los esquemas de versionado basado en funcionalidades y el de desarrollo unificado y te permiten saber cómo proceder en función de tu escenario.
En esta sección encontrarás:
cómo resolver conflictos de pulls entre ramas release;
cómo conservar ambos cambios en una fusión; y
cómo fusionar con conflictos externos a Studio.
Resolución de conflictos en el versionado basado en funcionalidades
Dado que puede haber múltiples ramas e integraciones en el modelo basado en funcionalidades, es más probable que se generen conflictos al intentar fusionar. Las soluciones variarán en función de las necesidades y las metodologías de trabajo.
En el modelo basado en funcionalidades, los conflictos pueden resolverse:
en la rama release;
en la rama feature; y
en una rama de integración previa al lanzamiento.