Git branch merge: cómo volver a unir ramas

Si has dividido una rama de Git para probar los cambios, puedes volver a fusionar las ramas con el comando git merge. Git distingue entre la fusión rápida (“Fast Forward Merge”) y la fusión a tres bandas (“Three Way Merge”).

Dominios web baratos

Dominios tan originales como tus ideas.

Registra tu dominio con IONOS y disfruta de las funciones integrales que tenemos para ofrecerte.

Correo incluido
Certificado SSL
Asistencia 24/7

¿Qué es git merge?

Usar Git para trabajar en un proyecto da mucha libertad, tanto si estás desarrollando el proyecto por tu cuenta como si trabajas con un gran equipo que abarca distintos aspectos del proceso. Con las ramas de Git,puedes buscar soluciones a problemas y probar enfoques completamente nuevos. Aunque no vaya bien, lo que hagas en esa rama no afecta a la rama principal. Con el comando de Git git branch puedes crear una línea de desarrollo independiente y moverte entre las distintas ramas con git checkout.

Si cuando has terminado lo que querías hacer, quieres volver a fusionar las ramas, puedes utilizar git merge. Git merge fusiona dos ramas o branches en una y te permite guardar tus cambios con seguridad. En la mayoría de los casos, las diferentes líneas de desarrollo se integran en la rama main.

Sintaxis de git merge

Git te ofrece dos formas de llevar a cabo git merge: una fusión rápida y una fusión a tres bandas. Más adelante te mostraremos en qué se diferencian estos dos procedimientos, pero la sintaxis básica de git merge para ramas es siempre la misma y tiene el siguiente aspecto:

git merge <rama></rama>

La rama especificada en “<rama>” se integra en la rama actual.

Unir ramas en git

La combinación más sencilla de dos rama es la fusión rápida o “Fast Forward Merge”. Si esto no es posible, se puede realizar una fusión a tres bandas o “Three Way Merge”.

Fusión rápida

Se hace una fusión rápida cuando hay una conexión lineal entre la rama actual de Git y la rama de destino. Unejemplo de esto sería crear una rama de Git y trabajar en ella mientras la rama principal permanece sin cambios. En este caso, Git ve la operación como una continuación de la main y la fusiona junto con los cambios en un commit. Esto tendría este aspecto:

git checkout master
git merge rama_de_trabajo
git branch -d rama_de_trabajo

En este ejemplo, primero se cambia a la rama main, se realiza un git merge con la rama o branch secundaria “rama_de_trabajo”, que conecta ambas ramas, y luego se elimina la rama secundaria redundante con el comando “git branch -d”.

Fusión a tres bandas

No obstante, este git merge no es posible si ninguna de las dos ramas corresponde a la rama original. Si divides una rama secundaria para trabajar en ella y durante ese tiempo la rama principal se modifica, tienes que hacer una fusión a tres bandas. El “tres” es el resultado de los tres commit: rama principal, rama secundaria y la rama original sobre la que trabajas. El siguiente ejemplo muestra cómo puede hacerse un git merge con tres puntos de partida:

git checkout -b nueva_funcionalidad main
git add archivo
git commit -m "Ejemplo de cambios en este proyecto"
git add archivo_segundo
git commit -m "Fin de los cambios de ejemplo"
git checkout mail
git add archivo_tercero
git commit -m "Cambios realizados en main"
git merge  nueva_funcionalidad
git branch -d  nueva_funcionalidad

En este ejemplo, se han realizado cambios en main y en el fork, de forma que ya no se puede realizar una fusión rápida. Esta situación es especialmente común cuando un equipo grande trabaja sobre un mismo proyecto.

Resolución de conflictos para git merge

Si intentas fusionar ramas con Git sin prestar atención a los cambios realizados, puedes crear un conflicto generalizado. Si algún colaborador cambia la misma parte de un archivo en ambas ramas, Git ya no puede determinar cuál de las dos versiones debe usar finalmente. En este caso, el proceso se detiene antes de que se realice el git merge y tienes la opción de resolver el conflicto manualmente. El mensaje que recibes es:

CONFLICT (content): Merge conflict in <archivo></archivo>
Automatic merge failed; fix conflicts and then commit the result.

Usando el comando git status, que conoces por el resumen de Git descargable en PDF, puedes ver exactamente qué archivos hay que cambiar. En ese caso, se muestran claramente como “unmerged” o “no fusionado”. Cambia los archivos necesarios, añádelos con git add y ejecuta un nuevo git commit. Después, podrás realizar un git merge para las ramas o branches de Git en cuestión, y eliminar las que ya no necesites.

Consejo

¡Disfruta de los despliegues automatizados! Con Deploy Now de IONOS, puedes publicar tu proyecto en línea en tres sencillos pasos: conectar, crear y desplegar con Git. Benefíciate de ventajas como una configuración más rápida, flujos de trabajo optimizados y máxima escalabilidad.