Probar con una rama parcialmente fusionada
En los pasos anteriores, vimos cómo funcionan git branch --merged
y git log main ^branch
con una rama completamente fusionada. Ahora, veamos qué sucede con una rama que está parcialmente fusionada, es decir, algunos, pero no todos, de sus commits se han integrado en otra rama.
Primero, asegúrate de estar en el directorio my-time-machine
:
cd ~/project/my-time-machine
Creemos una nueva rama llamada partial-feature
y cambiemos a ella:
git branch partial-feature
git checkout partial-feature
Ahora, haremos dos commits en esta nueva rama:
echo "Adding part 1 of the feature" >> partial.txt
git add partial.txt
git commit -m "Add part 1"
echo "Adding part 2 of the feature" >> partial.txt
git add partial.txt
git commit -m "Add part 2"
Después de los commits, deberías ver una salida similar a esta:
[partial-feature a1b2c3d] Add part 1
1 file changed, 1 insertion(+)
create mode 100644 partial.txt
[partial-feature e1f2g3h] Add part 2
1 file changed, 1 insertion(+)
Ahora, cambiemos de nuevo a la rama master
y fusionemos solo el primer commit de partial-feature
. Podemos hacer esto usando git cherry-pick
. Primero, necesitamos el hash del commit de "Add part 1". Puedes encontrar esto ejecutando git log partial-feature
y copiando el hash del primer commit.
git checkout master
## Reemplaza <commit_hash> con el hash real del commit "Add part 1"
git cherry-pick <commit_hash>
Deberías ver una salida que indique que el cherry-pick fue exitoso:
[master i1j2k3l] Add part 1
Date: Mon Aug 7 10:05:00 2023 +0000
1 file changed, 1 insertion(+)
create mode 100644 partial.txt
Ahora, usemos de nuevo git branch --merged master
:
git branch --merged master
Deberías ver master
y feature-branch
en la lista, pero no partial-feature
. Esto se debe a que partial-feature
todavía tiene el commit "Add part 2" que no se ha fusionado en master
. git branch --merged
solo lista las ramas donde todos los commits están presentes en la rama de destino.
Finalmente, usemos git log master ^partial-feature
:
git log master ^partial-feature
Este comando mostrará los commits que están en master
pero no en partial-feature
. Debería mostrar el/los commit(s) inicial(es) de master
, el commit "Add new feature" (que ahora está en master) y el commit "Add part 1" (que hicimos cherry-pick). No debería mostrar el commit "Add part 2", ya que ese commit solo está en partial-feature
.
Esto demuestra cómo git branch --merged
y git log main ^branch
pueden ayudarte a entender el estado de fusión de tus ramas, incluso cuando solo se han integrado algunos commits.