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
Compra y registra tu dominio ideal
  • Domina el mercado con nuestra oferta 3x1 en dominios
  • Función Domain Connect para una co­n­fi­gu­ra­ción DNS si­m­pli­fi­ca­da gratis
  • Registro privado y gratis para mayor seguridad

¿Qué es git merge?

Usar Git para trabajar en un proyecto da mucha libertad, tanto si estás de­sa­rro­lla­n­do 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 so­lu­cio­nes a problemas y probar enfoques co­m­ple­ta­me­n­te 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 de­sa­rro­llo in­de­pe­n­die­n­te 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 di­fe­re­n­tes líneas de de­sa­rro­llo 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 mo­s­tra­re­mos en qué se di­fe­re­n­cian estos dos pro­ce­di­mie­n­tos, 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 es­pe­ci­fi­ca­da en “<rama>” se integra en la rama actual.

Unir ramas en git

La co­m­bi­na­ció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. Un ejemplo 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 co­n­ti­nua­ció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 se­cu­n­da­ria “rama_de_trabajo”, que conecta ambas ramas, y luego se elimina la rama se­cu­n­da­ria re­du­n­da­n­te 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 co­rre­s­po­n­de a la rama original. Si divides una rama se­cu­n­da­ria 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 se­cu­n­da­ria 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 es­pe­cia­l­me­n­te común cuando un equipo grande trabaja sobre un mismo proyecto.

Re­so­lu­ción de co­n­fli­c­tos para git merge

Si intentas fusionar ramas con Git sin prestar atención a los cambios rea­li­za­dos, puedes crear un conflicto ge­ne­ra­li­za­do. Si algún co­la­bo­ra­dor cambia la misma parte de un archivo en ambas ramas, Git ya no puede de­te­r­mi­nar cuál de las dos versiones debe usar fi­na­l­me­n­te. En este caso, el proceso se detiene antes de que se realice el git merge y tienes la opción de resolver el conflicto ma­nua­l­me­n­te. 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 de­s­ca­r­ga­ble en PDF, puedes ver exac­ta­me­n­te qué archivos hay que cambiar. En ese caso, se muestran cla­ra­me­n­te como “unmerged” o “no fusionado”. Cambia los archivos ne­ce­sa­rios, 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 de­s­plie­gues au­to­ma­ti­za­dos! Con Deploy Now de IONOS, puedes publicar tu proyecto en línea en tres sencillos pasos: conectar, crear y desplegar con Git. Be­ne­fí­cia­te de ventajas como una co­n­fi­gu­ra­ción más rápida, flujos de trabajo op­ti­mi­za­dos y máxima es­ca­la­bi­li­dad.

Ir al menú principal