Introducción a Git

Teoría: Cambiar el último commit

A veces, después de un commit, nos damos cuenta de que olvidamos algo o necesitamos corregir el mensaje. En lugar de hacer un nuevo commit, podemos hacerlo de una manera más limpia.

En esta lección, aprenderemos a modificar el último commit usando git commit --amend. ✏️

Olvidamos agregar un archivo

Imagina que estás trabajando en tu proyecto y decides hacer un commit con los cambios en dos archivos: INFO.md y README.md. Sin darte cuenta, solo agregaste uno de los archivos a Git antes de hacer el commit.

echo 'experiment with amend' >> INFO.md
echo 'experiment with amend' >> README.md
git add INFO.md
git commit -m 'add content to INFO.md and README.md'

Después de hacer el commit, usas git status y te das cuenta de que README.md sigue sin estar incluido en el commit:

git status

Salida:

On branch main Your branch is ahead of 'origin/main' by 1 commit. (use "git push" to publish your local commits) Changes not staged for commit: (use "git add <file>..." to update what will be committed) modified: README.md

Oops, olvidamos incluir README.md en el commit.

La solución: git commit --amend

En lugar de hacer un segundo commit con solo ese archivo, podemos modificar el commit que acabamos de hacer con git commit --amend.

Paso 1: Agregar el archivo faltante
git add README.md

Esto indica a Git que queremos incluir README.md en el próximo commit.

Paso 2: Modificar el último commit

Ahora modificamos el commit reciente:

git commit --amend

Después de ejecutar este comando, se abrirá el editor de texto predeterminado de Git para modificar el mensaje del commit. Puedes dejarlo igual o hacer cambios.

Si prefieres no modificar el mensaje, usa la opción --no-edit para evitar que Git abra el editor:

git commit --amend --no-edit
Paso 3: Verificar el resultado

Si ejecutamos git status nuevamente, veremos que ya no hay cambios pendientes:

git status

Salida:

On branch main Your branch is ahead of 'origin/main' by 1 commit. (use "git push" to publish your local commits) nothing to commit, working tree clean

¿Cómo funciona --amend?

Cuando usamos git commit --amend, Git no "modifica" el commit original, sino que:

1️⃣ Crea un nuevo commit que combina los cambios del commit anterior con los nuevos cambios.

2️⃣ Reemplaza el commit anterior con este nuevo commit.

Visualmente, parece que el commit original fue corregido, pero en realidad, el commit anterior deja de existir y se reemplaza por uno nuevo.

Cuándo NO usar `git commit --amend`

Si ya subiste el commit a un repositorio remoto con git push, modificar el commit con --amend puede causar problemas a otros colaboradores, ya que cambia el historial de Git. En ese caso, lo mejor es hacer un nuevo commit con los cambios pendientes.


asciicast

Resumen

  • git commit --amend permite modificar el último commit en lugar de hacer un nuevo commit.
  • Es útil cuando olvidamos agregar archivos o queremos corregir el mensaje del commit.
  • Funciona creando un nuevo commit que reemplaza el anterior.
  • Si no queremos cambiar el mensaje del commit, podemos usar git commit --amend --no-edit.
  • No se recomienda usarlo si el commit ya fue subido a un repositorio remoto.

Este comando es una herramienta poderosa para mantener un historial de commits limpio y ordenado. ¡Úsalo con cuidado!

Completado

0 / 15