merging - MutakamwoyoCloud/MCloud GitHub Wiki

Identificando las partes del merge

Al hacer git pull o mergear directamente pueden surgir conflictos, esto pasa cuando hay otra persona que ha estado trabajando en el mismo fichero que tu y además ha escrito código sobre las mismas lineas.

Git al mezclar el trabajo de los dos y encontrar este problema se encontrará con un conflicto y te pedirá que lo resuelvas antes de seguir trabajando y commitees esa resolución.

Lo que ha pasado es que Git ha escrito sobre esos ficheros con conflictos para indicar donde ha estado el problema:

En esta parte van las lineas irrelevantes, ya sea porque han permanecido intactas o solo uno de los programadores las ha cambiado, por lo tanto no hay conflicto.

<<<<<<<<<<<< yours:sample.txt               Tu commit, normalmente apuntará a HEAD
Esta es la parte de **TU** código que ha creado los conflictos
aparecen entre la línea que empieza por < y la siguiente que empieza por =
============
Esta es la otra parte del código que crea conflicto
esta parte es la que ha generado conflicto **de la otra persona**
>>>>>>>>>>>> theirs:sample.txt              El commit de la otra persona, apuntara a su commit id.

Por aquí todo esta correcto!

Como se puede comprobar las zonas conflictivas se delomitan con <<<<<<<<, ====== y >>>>>> Lo que esta antes de ======== est tu parte, lo que esta despues es la parte de la otra persona.

Resolviendo el merge

Una vez sabes cual es el conflicto existen varias opciones:

  • No te atreves a mergear, abres git bash y escribres $git merge --abort
  • Manualmente y la mas facil:
    • Simplemente sabiendo donde esta el conflicto borras las marcas de git a mano y mezclas tu las lineas que quieras.
    • Despues añades el fichero modificado (git add) y commiteas la resolución del merge
  • Usando git mergetool que es una herramienta gráfica que te abre una ventana con los 3 ficheros generados (el tuyo, el suyo y el merge).