Ejercicio: Explorando Merge, Rebase y Manejo de Historial en Git
Este ejercicio está diseñado para que practiques operaciones fundamentales en Git relacionadas con ramas, fusiones (merge), reescritura de historial (rebase) y gestión de errores (eliminar un commit).
1. Crear un nuevo repositorio
Crea un nuevo repositorio en GitHub llamado:
git-avanzado-ejercicioX
Reemplaza X por tu número de grupo o nombre. Clónalo en tu máquina:
git clone https://github.com/usuario/git-avanzado-ejercicioX.git
cd git-avanzado-ejercicioX
Crea un archivo llamado bitacora.md y agrega una línea que diga:
# Bitácora de cambios
Inicio del proyecto.
Has commit:
git add bitacora.md
git commit -m "Inicio del proyecto"
git push origin main
2. Crear una rama y hacer commits (MERGE)
- Crea una rama llamada
agregar-capitulo-1:
git checkout -b agregar-capitulo-1
-
Edita
bitacora.mdagregando una sección llamada Capítulo 1 con 2-3 líneas. -
Has commit:
git add bitacora.md
git commit -m "Agregado capítulo 1"
- Regresa a
main
git checkout main
- Agrega nuevas lineas en la bitácora y has commit:
git commit -m "Actualización en main"
- Ahora, integra los cambios de
agregar-capitulo-1amainusandomerge:
git merge agregar-capitulo-1
-
Resuelve cualquier conflicto si es necesario (Git te indicará si hay conflictos).
-
Una vez resuelto, Has commit:
git commit -m "Merge de agregar-capitulo-1 a main"
- Sube los cambios a GitHub:
git push origin main
Hasta aquí al observar los commits en GitLens. Podrás observar que hay una bifurcación en el historial, lo que indica que se ha realizado un merge.
- Si quieres ver el historial de commits, puedes usar:
git log --oneline --graph --all
Ejemplo de historial después de un merge
* 0cb7494 Resuelto el conflicto
|\
| * 0aa0487 (agregar-capitulo-1) Agregando capítulo 1
* | d53314a Texto nuevo en la bitácora
|/
* 0ea693f Inicio
3. Crear otra rama y aplicar REBASE
- Crea una nueva rama llamada
agregar-capitulo-2desdemain:
git checkout -b agregar-capitulo-2
-
Agrega otra sección a
bitacora.mdtitulada Capítulo 2. -
Has commit:
git add bitacora.md
git commit -m "Agregado capítulo 2"
- Ve a la rama
mainy agrega nuevas lineas en la bitácora en las diferentes secciones, modificando lo que ya existe:
git checkout main
git add bitacora.md
git commit -m "Actualización en main con cambios previos"
- Ahora, integra los cambios de
agregar-capitulo-2amainusandorebase:
git checkout agregar-capitulo-2
git rebase main
-
Resuelve cualquier conflicto que pueda surgir durante el rebase (Git te indicará si hay conflictos).
-
Una vez resuelto, Has commit:
git add bitacora.md
git rebase --continue
- Regresa a la rama
mainy realiza un merge rápido para integrar los cambios:
git checkout main
git merge agregar-capitulo-2
Si seguiste los pasos correctamente, deberías observar que el historial de commits es lineal y no hay bifurcaciones (a excepción del anterior), lo que indica que se ha realizado un rebase.
Ejemplo de historial después de un rebase
* 380f775 (HEAD -> master, agregar-capitulo-2) Resolviendo los conflictos de rebase
* 08080db Agregando informació en main
* 0cb7494 Resuelto el conflicto
|\
| * 0aa0487 (agregar-capitulo-1) Agregando capítulo 1
* | d53314a Texto nuevo en la bitácora
|/
* 0ea693f Inicio
4. Crear rama, cometer error y eliminar commit
- Crea una nueva rama llamada
agregar-capitulo-error:
git checkout -b agregar-capitulo-error
-
Agrega una sección Capítulo Error con contenido ficticio o erróneo.
-
Has commit:
git add bitacora.md
git commit -m "Capítulo con errores"
- Te das cuenta que el contenido no debería estar. Elimínalo del historial con:
git reset --soft HEAD~1
# O si quieres eliminarlo completamente:
# git reset --hard HEAD~1
- Elimina el archivo o corrige y Has un nuevo commit correcto:
# O puedes restaurar el estado original del archivo:
git restore bitacora.md
git add bitacora.md
git commit -m "Corrección de capítulo con errores"
- Sube la rama si quieres conservarla:
git push origin agregar-capitulo-error
⚠️ Ten cuidado si usas
--hard, pues perderás el trabajo no guardado.
✅ Resultado Esperado
Al final del ejercicio tendrás:
- 1 rama unida con
merge - 1 rama integrada usando
rebase - 1 rama con un commit eliminado y reescrito
- Un historial claro que puedes observar con:
git log --oneline --graph --all