Cómo comprobar si una rama de Git está fusionada

GitGitBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderás cómo comprobar de manera efectiva si una rama (branch) de Git se ha fusionado en otra rama. Exploraremos el método principal utilizando el comando git branch --merged, demostrando su uso e interpretando su salida.

Además, verificaremos el estado de la fusión examinando el registro (log) de Git para detectar la presencia de confirmaciones de fusión (merge commits) y probaremos el comportamiento de los comandos con ramas no fusionadas para consolidar tu comprensión. Este enfoque práctico te proporcionará las habilidades necesarias para gestionar con confianza tus ramas de Git y mantener un repositorio limpio.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL git(("Git")) -.-> git/BasicOperationsGroup(["Basic Operations"]) git(("Git")) -.-> git/BranchManagementGroup(["Branch Management"]) git/BasicOperationsGroup -.-> git/add("Stage Files") git/BasicOperationsGroup -.-> git/status("Check Status") git/BasicOperationsGroup -.-> git/commit("Create Commit") git/BranchManagementGroup -.-> git/branch("Handle Branches") git/BranchManagementGroup -.-> git/checkout("Switch Branches") git/BranchManagementGroup -.-> git/merge("Merge Histories") git/BranchManagementGroup -.-> git/log("Show Commits") subgraph Lab Skills git/add -.-> lab-560046{{"Cómo comprobar si una rama de Git está fusionada"}} git/status -.-> lab-560046{{"Cómo comprobar si una rama de Git está fusionada"}} git/commit -.-> lab-560046{{"Cómo comprobar si una rama de Git está fusionada"}} git/branch -.-> lab-560046{{"Cómo comprobar si una rama de Git está fusionada"}} git/checkout -.-> lab-560046{{"Cómo comprobar si una rama de Git está fusionada"}} git/merge -.-> lab-560046{{"Cómo comprobar si una rama de Git está fusionada"}} git/log -.-> lab-560046{{"Cómo comprobar si una rama de Git está fusionada"}} end

Utilizar git branch --merged para comprobar

En este paso, aprenderemos cómo utilizar el comando git branch --merged para ver qué ramas (branches) se han integrado completamente en la rama actual. Este es un comando muy útil para limpiar tu repositorio y entender el estado de tu proyecto.

Primero, asegúrate de estar en el directorio de tu proyecto. Abre tu terminal y navega hasta el directorio my-time-machine:

cd ~/project/my-time-machine

Ahora, creemos una nueva rama y hagamos un commit en ella. Esto simulará un flujo de trabajo común en el que trabajas en una característica (feature) en una rama separada.

git branch feature/add-greeting
git checkout feature/add-greeting
echo "Greetings from the feature branch!" >> greeting.txt
git add greeting.txt
git commit -m "Add greeting file"

Después del commit, deberías ver una salida similar a esta:

[feature/add-greeting a1b2c3d] Add greeting file
 1 file changed, 1 insertion(+)
 create mode 100644 greeting.txt

Ahora, cambiemos de nuevo a la rama master:

git checkout master

Deberías ver una salida que indique que has cambiado de rama:

Switched to branch 'master'

Ahora, fusionemos la rama feature/add-greeting en master:

git merge feature/add-greeting

Deberías ver una salida que indique que la fusión (merge) fue exitosa:

Updating a1b2c3d..e4f5g6h
Fast-forward
 greeting.txt | 1 +
 1 file changed, 1 insertion(+)
 create mode 100644 greeting.txt

Ahora que hemos fusionado la rama feature/add-greeting en master, usemos git branch --merged para ver qué ramas se han fusionado en la rama actual (master).

git branch --merged

Deberías ver una salida similar a esta:

* master
  feature/add-greeting

El * indica la rama actual (master). La salida muestra que tanto master como feature/add-greeting están listadas. Esto significa que todos los commits de feature/add-greeting ahora están presentes en la rama master.

Comprender qué ramas se han fusionado es importante porque te ayuda a identificar las ramas que ya no son necesarias y se pueden eliminar de forma segura. Esto mantiene tu repositorio limpio y organizado.

Verificar con git log la confirmación de fusión (merge commit)

En el paso anterior, fusionamos la rama feature/add-greeting en master. Ahora, usemos el comando git log para ver el historial de confirmaciones (commits) y confirmar que la confirmación de fusión está presente.

Asegúrate de que todavía estés en el directorio ~/project/my-time-machine.

Ejecuta el comando git log:

git log

Deberías ver una lista de confirmaciones, con la más reciente en la parte superior. Busca un mensaje de confirmación que indique una fusión. Probablemente se verá algo así:

commit e4f5g6h7i8j9k0l1m2n3o4p5q6r7s8t9u0v1w2x (HEAD -> master)
Merge: a1b2c3d f0e1d2c
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:05:00 2023 +0000

    Merge branch 'feature/add-greeting'

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (feature/add-greeting)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:03:00 2023 +0000

    Add greeting file

commit a1b2c3d4e5f6g7h8i9j0k1l2m3n4o5p6q7r8s9 (HEAD -> master)
Author: Jane Doe <[email protected]>
Date:   Mon Aug 7 10:00:00 2023 +0000

    Send a message to the future

Observa la confirmación con el mensaje "Merge branch 'feature/add-greeting'". Esta es la confirmación de fusión que Git creó automáticamente cuando fusionamos la rama feature/add-greeting en master. Esta confirmación tiene dos confirmaciones padre, indicadas por la línea "Merge:". Un padre es el extremo de la rama master antes de la fusión, y el otro es el extremo de la rama feature/add-greeting.

El comando git log es esencial para entender la historia de tu proyecto. Te permite ver todas las confirmaciones, quién las hizo, cuándo se hicieron y qué cambios se incluyeron en cada confirmación. Esto es increíblemente valioso para depurar, seguir el progreso y colaborar con otros.

Presiona q para salir de la vista del registro.

Probar con ramas no fusionadas (unmerged branches)

En los pasos anteriores, vimos cómo git branch --merged muestra las ramas que se han integrado completamente. Ahora, veamos qué sucede cuando tenemos una rama que no se ha fusionado en la rama actual.

Asegúrate de estar en el directorio ~/project/my-time-machine y en la rama master. Puedes verificar esto con git status.

Creemos una nueva rama llamada feature/add-farewell y cambiemos a ella:

git branch feature/add-farewell
git checkout feature/add-farewell

Deberías ver una salida que indique que has cambiado de rama:

Switched to branch 'feature/add-farewell'

Ahora, creemos un nuevo archivo y hagamos un commit en esta rama:

echo "Farewell from the farewell branch!" > farewell.txt
git add farewell.txt
git commit -m "Add farewell file"

Después del commit, deberías ver una salida similar a esta:

[feature/add-farewell a1b2c3d] Add farewell file
 1 file changed, 1 insertion(+)
 create mode 100644 farewell.txt

Ahora, cambiemos de nuevo a la rama master:

git checkout master

Deberías ver una salida que indique que has cambiado de rama:

Switched to branch 'master'

Ahora estamos en la rama master, y la rama feature/add-farewell contiene un commit que no está presente en master.

Usemos de nuevo git branch --merged:

git branch --merged

Deberías ver una salida similar a esta:

* master
  feature/add-greeting

Observa que feature/add-farewell no está lista en la salida. Esto se debe a que el commit que hicimos en feature/add-farewell no se ha fusionado en la rama master.

Ahora, usemos el comando git branch --no-merged. Este comando muestra las ramas que no se han fusionado en la rama actual.

git branch --no-merged

Deberías ver una salida similar a esta:

  feature/add-farewell

Esta salida muestra correctamente feature/add-farewell porque contiene commits que no están en la rama master.

Los comandos git branch --merged y git branch --no-merged son herramientas poderosas para administrar tus ramas. Te ayudan a llevar un registro de qué ramas están terminadas y se pueden eliminar, y qué ramas todavía están en desarrollo y necesitan ser fusionadas.

Resumen

En este laboratorio (lab), aprendimos cómo comprobar si una rama de Git se ha fusionado en la rama actual. Comenzamos utilizando el comando git branch --merged, que enumera todas las ramas cuyos extremos son alcanzables desde el extremo de la rama actual, mostrando efectivamente qué ramas se han integrado completamente. Demostramos esto creando una nueva rama, realizando un commit, fusionándola en la rama master y luego utilizando git branch --merged para confirmar la fusión.

También exploramos cómo verificar la fusión utilizando git log buscando la confirmación de fusión (merge commit), y probamos el comando con ramas no fusionadas (unmerged branches) para entender la diferencia en la salida. Esta experiencia práctica proporcionó una comprensión práctica de cómo utilizar los comandos de Git para administrar y entender el estado de las ramas en un repositorio.