Uniendo ramas
Para tratar la unión de ramas, vamos a suponer el siguiente escenario en el que se crea una rama desarrollo a partir de la rama master.
-- master --------------------... \ \ --- desarrollo ---....
Se trata del escenario clásico donde el software en productivo (ya desplegando en el servidor, estable y que ha pasado unos controles de calidad) se encuentra en la rama master. A esta rama sólo van bugfixes. En la rama desarrollo se incluyen las nuevas funcionalidades previstas para la siguiente versión.
Esto en git se hace con:
% git branch desarrollo
Si llegado el momento, se quiere fusionar la rama desarrollo a master de nuevo:
-- master ------------------------------ \ / \ / --- desarrollo ----'
Desde la rama master, se hace:
% git merge desarrollo
Lo que une la rama desarrollo a master.
Ojo: Si se modificado la misma línea de código en ambas ramas, es probable que git reporte un conflicto a solucionar.
Resolución de conflictos
Al unir dos ramas con cambios sobre las mismas líneas de un cierto fichero, git nos notifica un conflicto. Ante un conflicto git nos solicita nuestra interverción, por tanto, se trata de una operación manual.
Ante un conflicto, git nos pregunta con qué nos debemos quedar. Como norma general, la resolución de conflicto consiste en fusionar los cambios de ambas ramas de manera manual, es decir, que no es cuestión de quedarse con un cambio u otro, sino con una mezcla de los dos.