Saltar al contenido

Introducción

Git cuenta con diferentes mecanismos para reescribir el historial, que incluyen los comandos git commit --amend, git rebase y git reflog. Leer nuestro tutorial te ayudará a comprender mejor las funciones de estos comandos y sus particularidades.

Modificar el último commit con git commit --amend

A menudo puedes olvidar formatear tu commit, añadir archivos al área de preparación (staging) o cometer un error en el mensaje del registro del commit. Aquí es donde git commit --amend resulta útil. Ejecutar este comando te ayudará a corregir este tipo de errores menores. En general, este comando se utiliza para modificar el último commit. Ejecuta el siguiente comando para combinar los cambios preparados con el commit anterior:

bash
git commit --amend

Es importante recordar que, para evitar problemas de colaboración, no deberías modificar commits que están siendo desarrollados por otros usuarios.

Comando git reflog

Los “reflogs” (registros de referencias) se utilizan para registrar las actualizaciones que se realizan en la punta de las ramas. Con el comando git reflog, puedes volver a todos los commits, incluidos aquellos que no han sido referenciados por ninguna rama. Ejecuta el siguiente comando para ver el registro:

bash
git reflog

El comando git reflog cuenta con sus propios subcomandos, que incluyen git reflog show, git reflog expire y git reflog delete.

Git rebase

El comando git rebase se utiliza para mover o combinar una serie de commits en un nuevo commit base completamente nuevo. El beneficio más importante de este comando es un historial claro, lo cual es fundamental para trabajar de manera efectiva en Git. Existen dos modos del comando git rebase: estándar e interactivo. En el modo estándar, puedes usar git rebase para aplicar los commits de la rama de trabajo actual al encabezado de la rama especificada. Con la ayuda del modo interactivo, puedes mantener el historial del proyecto limpio. Para ejecutar el modo interactivo, añade la opción -i a git rebase:

bash
git rebase -i <base-branch>

Múltiples mensajes

Cada commit de Git tiene un mensaje de registro que explica lo ocurrido en dicho commit. Durante un rebase interactivo, puedes usar los siguientes comandos para editar los mensajes de los commits:

  • Usa el comando r (reword/reeditar) para pausar la reproducción del rebase y reescribir el mensaje individual del commit.
  • El comando s (squash/combinar) pausará todos los commits marcados con s, y recibirás un mensaje para modificar los mensajes individuales y combinarlos en uno solo.
  • El comando f (fixup/fijar) es similar a squash. La diferencia es que no detendrá la reproducción del rebase para abrir un editor y combinar los mensajes de los commits.

Combinar commits para un historial limpio

El comando squash especifica los commits que deseas fusionar con los anteriores. Git abre el editor de texto y solicita combinar los mensajes específicos de los commits. La siguiente infografía demuestra perfectamente el proceso.

intro

Los commits que han sido modificados con el comando git rebase tienen identificadores diferentes a los originales. Si se reescriben los commits anteriores, los commits marcados con pick tendrán un identificador completamente nuevo.

Práctica

¿Cuáles de las siguientes afirmaciones son verdaderas respecto a los mecanismos para reescribir el historial en Git?

¿Te resulta útil?

Vista previa dual-run — compárala con las rutas Symfony en producción.