Saltar al contenido principal

Explicación de Git Amend: Guía paso a paso con ejemplos

Esta completa guía te enseña a utilizar git commit --amend para corregir errores, añadir cambios olvidados y gestionar el historial de Git.
Actualizado 6 jun 2025  · 8 min de lectura

Confirmar un cambio sólo para descubrir una errata o pasar por alto un archivo es una frustración familiar. Ahí es donde brilla git commit --amend.

Te permite retocar tu último commit, ya sea corrigiendo un mensaje o añadiendo cambios, sin saturar tu historial. Es esencial para un registro Git limpio y profesional, especialmente en proyectos de equipo en los que la claridad fomenta la colaboración. 

En esta guía, te guiaré a través de los aspectos básicos de la modificación de Git, los usos avanzados, los riesgos y las mejores prácticas para perfeccionar tu flujo de trabajo.

> Para un comienzo sólido en Git, consulta el curso Introducción a Git.

Modificar la confirmación más reciente

Esta sección explica cómo actualizar tu último commit con git commit --amend. Este comando es útil para corregir mensajes de confirmación y añadir cambios omitidos, ayudándote a mantener tu historial Git limpio y profesional.

Corregir mensajes de confirmación

Los mensajes de confirmación precisos son vitales para una documentación clara. Una errata o una nota imprecisa pueden inducir a error a los colaboradores.

Para revisar el mensaje de confirmación más reciente, ejecuta

git commit --amend

El comando anterior abre tu editor, permitiéndote editar el mensaje. Después de editar, guarda y cierra para actualizar la confirmación, manteniendo tu historial ordenado y descriptivo.

Explicación: El comando anterior sustituye el mensaje de la última confirmación por tu versión revisada, evitando confirmaciones adicionales para las correcciones.

Incorporar los cambios omitidos

Es habitual darse cuenta de que has olvidado incluir un archivo o un cambio después de confirmarlo. En lugar de crear una segunda confirmación sólo para la corrección, git commit --amend puede integrarlo todo en la confirmación original.

Pasos:

  • Actualiza o añade los archivos omitidos.
  • Escenifica las actualizaciones con:
git add <file-name>
  • Modifica la confirmación anterior sin alterar el mensaje:
git commit --amend --no-edit

Explicación: La bandera --no-edit conserva el mensaje original, actualizando sólo el contenido. El resultado es un historial de confirmaciones más limpio y consolidado.

Diagrama de modificación de una confirmación Git para actualizar archivos y mensajes.

Un diagrama que muestra cómo git amend transforma la confirmación original.

> Para profundizar en la basica de Git, el curso Fundamentos de Git es un excelente paso siguiente.

Aprende hoy los fundamentos de Git

Para principiantes: Control de versiones maestro mediante Git.
Empieza a aprender gratis

Técnicas avanzadas de enmienda

Esta sección se sumerge en usos sofisticados de git amend y herramientas afines. Se adaptan a flujos de trabajo complejos.

Rebase interactivo para commits históricos

El comando git commit --amend es útil cuando sólo necesitas arreglar la confirmación más reciente. 

Pero, ¿y si el error está enterrado dos o tres commits más atrás? Ahí es donde entra en juego interactive rebase. Te permite editar, reordenar, aplastar o eliminar confirmaciones antiguas, reescribiendo el historial con precisión.

Supongamos que quieres modificar una de tus tres últimas confirmaciones. Empieza lanzando una rebase interactiva:

git rebase -i HEAD~3

Esto abre un editor de texto con una lista de tus tres últimas confirmaciones, cada una precedida por la palabra pick, así:

pick a1b2c3 Commit message 1
pick d4e5f6 Commit message 2
pick 789abc Commit message 3
  • Cambia pick a edit junto a la confirmación que quieras revisar.
  • Guarda y cierra el editor.

Git se detendrá en la confirmación seleccionada y te pedirá que hagas cambios.

Ahora, haz los cambios que necesites:

  • Edita los archivos según sea necesario.
  • Escenifica los cambios:
git add .
  • Modifica el compromiso:
git commit --amend
  • Actualiza el mensaje de confirmación si es necesario, luego guarda y cierra el editor. 
  • Una vez completados tus cambios, dile a Git que continúe:
git rebase --continue

Git aplicará las confirmaciones restantes sobre tu confirmación actualizada. Si hay conflictos, resuélvelos antes de volver a ejecutar git rebase --continue.

Explicación: Los comandos anteriores reescriben el historial de las tres últimas confirmaciones, lo que te permite refinar las entradas más antiguas.

Nota: El rebase interactivo reescribe los hashes de confirmación. Si la rama ha sido compartida con otros (por ejemplo, empujada a una remota), reescribir su historial puede causar problemas a los colaboradores. Utilízalo sólo en ramas locales o privadas, o comunícate con tu equipo antes de forzar el empuje (git push --force).

Corregir commits en pipelines CI/CD

En los procesos CI/CD, un historial Git limpio y conciso es algo más que estética: permite registros más claros, una depuración más sencilla y una automatización más predecible. 

Cuando hagas correcciones menores (por ejemplo, arreglar una errata, actualizar una configuración o retocar una prueba), puedes utilizar confirmaciones de corrección en lugar de crear commits independientes ruidosos.

Para preparar una confirmación que se fusionará automáticamente con otra anterior durante el rebase, ejecuta

git commit --fixup <commit-hash>

Esto crea una confirmación especial etiquetada como corrección para la confirmación especificada, indicando que debe combinarse durante un rebase interactivo.

Consejo: Utiliza git log o git rebase -i para encontrar el objetivo si es necesario.

Para fusionar limpiamente la confirmación de corrección con la original durante un rebase, utiliza la bandera --autosquash:

git rebase -i --autosquash HEAD~5

Esto abre el editor de cambios de base, donde Git reordenará y etiquetará automáticamente las confirmaciones de corrección para aplastarlas.

  • No es necesario cambiar manualmente pick a fixup-Git lo hace por ti.
  • Sólo tienes que confirmar el plan de rebase y guardar el archivo.

Explicación: Utilizar confirmaciones de corrección con --autosquash te permite agrupar los cambios menores en la confirmación histórica correcta, en lugar de saturar el historial con micro-compromisos. Esto da como resultado un registro limpio y lineal, que:

  • Simplifica la auditoría y la depuración en entornos CI/CD
  • Reduce el ruido en pull requests y merge logs
  • Ayuda a evitar problemas de compilación o prueba relacionados con confirmaciones incompletas o engañosas

> Para ir más allá de los fundamentoscias, nuestro curso Git Intermedio explora con más detalle comandos avanzados como amend y rebase.

Implicaciones mecánicas de la enmienda

Modificar confirmaciones cambia tu historial Git. Esta sección explora los efectos técnicos de modificar las confirmaciones. Comprenderlas garantiza un uso seguro.

Invalidación e inmutabilidad del hash

Cada confirmación de Git tiene un hash único SHA-1 (o SHA-256 en versiones más recientes), calculado a partir de su contenido, metadatos y confirmación padre. La modificación crea un nuevo hash, rompiendo la inmutabilidad si se comparte.

Si el commit original ya se había enviado a una rama remota compartida, se crea un desajuste entre tus ramas local y remota.

Para empujar el historial actualizado, tendrás que forzar la actualización:

git push --force

Nota: Como ya se ha dicho, --force puede sobrescribir el trabajo de los colaboradores y causar confusión. Lo más seguro es modificar los commits antes de hacer push, o utilizar push forzados sólo en ramas privadas con coordinación.

Reflog y recuperación de datos

Aunque las confirmaciones modificadas se sobrescriben, Git no las borra inmediatamente. Git mantiene un reflog, que hace un seguimiento de las actualizaciones de las referencias de rama (como HEAD o origin/main), incluyendo las confirmaciones modificadas o eliminadas.

Puedes verlo con:

git reflog

Esto mostrará los cambios recientes con los hash de confirmación asociados.

Para recuperar una confirmación perdida:

 git checkout <old-commit-hash>

Luego puedes ramificar a partir de él, seleccionar cambios o inspeccionar el trabajo perdido.

Explicación: Reflog actúa como una red de seguridad, permitiéndote recuperar confirmaciones que parecen "perdidas" tras una modificación o un rebase. Es útil cuando un empuje de fuerza o una reescritura de la historia salen mal.

Consideraciones sobre el flujo de trabajo colaborativo

Aunque git commit --amend es una poderosa herramienta para limpiar la historia, su uso en entornos colaborativos debe manejarse con cuidado. 

Reescribir la historia pública puede introducir confusión, errores o incluso pérdida de datos si no se coordina adecuadamente.

Riesgo de modificación de los compromisos públicos

Lo diré de nuevo, una vez que un commit se ha enviado a un repositorio remoto compartido, modificarlo cambia su hash y su historial. Esto provoca errores de "no avance rápido" cuando otros intentan tirar o empujar, ya que su historial local ya no coincide con el remoto.

Si debes modificar una confirmación pública:

  • Avisa a tu equipo para evitar conflictos.
  • Utiliza git push --force-with-lease para actualizaciones más seguras.

El comando anterior garantiza que sólo sobrescribas la rama remota si no ha cambiado desde tu última obtención, minimizando el riesgo de borrar el trabajo de otros.

Buena práctica: Evita modificar las confirmaciones compartidas a menos que sea absolutamente necesario. Prefiere crear un nuevo commit o utilizar revert para preservar la estabilidad del equipo.

Políticas de protección de sucursales

Muchos equipos aplican reglas de protección de ramas -especialmente en main, master, o ramas de lanzamiento- para evitar los push forzados y las modificaciones directas. Esto puede bloquear cualquier empuje forzado relacionado con la enmienda después de que se empuje la confirmación.

Para evitarlo con seguridad:

  • Realiza las modificaciones antes de empujar.
  • Trabajar en ramas de características que no están protegidas.
  • Si se requiere una corrección en una rama protegida:
    • Crea un nuevo commit en su lugar.
    • O solicita una excepción a los administradores del repositorio con la debida justificación.

> Si colaboras a través de GitHub, el programa Fundamentos de GitHub te ayudará a consolidar tus habilidades en el flujo de trabajo de GitHub.

Soporte de herramientas e interfaces

Modificar confirmaciones no tiene por qué limitarse a la línea de comandos. 

Muchas herramientas Git ofrecen interfaces fáciles de usar que hacen el proceso más accesible, especialmente para los principiantes. Elegir la interfaz adecuada puede aumentar tanto la confianza como la productividad.

Clientes GUI

Las herramientas GUI hacen que git amend sea accesiblecon elementos visuales:

  • Árbol de fuentes: Incluye una casilla de verificación "Modificar" en el panel de confirmación; los usuarios pueden ver y modificar los cambios realizados antes de confirmar.
  • GitKraken: Permite la reordenación mediante arrastrar y soltar y la edición interactiva de confirmaciones, incluido el soporte de enmiendas.
  • GitHub Desktop: Permite a los usuarios modificar la última confirmación directamente desde la vista del historial de confirmaciones con un simple toque.

Estas herramientas proporcionan información visual en tiempo realreducen el riesgo de errores accidentales y son especialmente útiles para los que están aprendiendo Git.

Benchmarks de flujo de trabajo CLI vs GUI

CLI (git commit --amend) es rápido pero propenso a errores para los principiantes. Las GUI proporcionan seguridad con señales visuales, pero pueden ralentizar a los usuarios avanzados. 

Las interfaces gráficas pueden facilitar el aprendizaje a los novatos; yo empecé con Sourcetree para entender los flujos de enmiendas antes de pasar a la CLI por rapidez y control.

Aquí tienes una comparación visual del soporte de enmiendas en las herramientas Git más populares:

Comparación de las herramientas GUI de Git para modificar las opciones.

Gráfico comparativo de las funciones de modificación de las herramientas GUI.

Buenas prácticas y recomendaciones

Para terminar, he aquí los principios clave para utilizar git commit --amend con eficacia y seguridad en los flujos de trabajo del mundo real:

Enmiendas sólo locales

Modifica sólo los commits locales para evitar problemas remotos. Verifícalo con git log y establece las normas del equipo en los documentos del proyecto para que sean coherentes.

commits atómicos y protocolos de equipo

Crea pequeños commits atómicos para cambios focalizados. Alinea el tamaño de las confirmaciones con tu equipo y revísalas antes de enviarlas para detectar errores.

Copias de seguridad automatizadas y educación

Utiliza copias de seguridad (por ejemplo, ganchos Git, instantáneas CI) antes de modificar y fomenta la familiaridad con herramientas como git reflog para recuperarte rápidamente de los errores.

Conclusión

git commit --amend es un potente comando que te permite pulir tu historial de confirmaciones, corregir errores y presentar claramente tu trabajo. Cuando se utiliza con cuidado -especialmente en confirmaciones locales- te ayuda a mantener un registro Git limpio y profesional, sin desorden ni confusión.

Para seguir desarrollando tu dominio de Git, explora el curso Git Intermedio o descárgate la Hoja de trucos de Git Completo como referencia rápida.

Feliz codificación, y ¡mantén afilada tu historia!

Aprende hoy los fundamentos de Git

Para principiantes: Control de versiones maestro mediante Git.

Preguntas frecuentes

¿Guarda git amend la información del autor del commit original?

Sí, conserva por defecto el autor y la marca de tiempo. Para cambiar el autor, utiliza git commit --amend --author="Name " para las actualizaciones.

¿Puedo modificar una confirmación sin cambiar su marca de tiempo?

Absolutamente. Utiliza git commit --amend --date= para conservar la marca de tiempo original, útil para registros históricos precisos.

¿Qué pasa si git amend falla porque no hay cambios por etapas?

Si no hay nada preparado, git amend falla a menos que utilices git commit --amend --allow-empty, a menudo para ediciones de sólo mensajes.

¿Cómo afecta git amend a los commit hooks?

La modificación vuelve a activar los ganchos de confirmación, como los scripts de precompromiso. Asegúrate de que los ganchos no bloqueen la enmienda si aplican normas estrictas.

¿Puedo recuperar una confirmación modificada sin acceder al registro?

Es duro. Sin reflog, necesitarías una rama de copia de seguridad o el hash original. Comprueba siempre las copias de seguridad o reflog para evitar pérdidas.

¿Cambia git amend el hash de la confirmación?

Sí. Como los commits de Git se identifican por su contenido y metadatos, cualquier cambio -incluidas las modificaciones- genera un nuevo hash de commit.

¿Puedo modificar una confirmación ya enviada?

Técnicamente, sí, pero requiere una fuerza de empuje (git push --force). Esto puede perturbar a los colaboradores, por lo que sólo se recomienda para sucursales privadas o locales.

¿En qué se diferencia git amend de git rebase?

git amend sólo afecta al commit más reciente, mientras que git rebase te permite reescribir el historial a través de múltiples commits, lo que lo hace más potente pero también más arriesgado.

¿Qué ocurre si utilizo --no-editar durante la modificación?

La bandera --no-edit mantiene el mensaje de confirmación anterior sin cambios mientras actualiza el contenido de la confirmación. Esto es ideal cuando se te acaba de pasar un archivo o una errata.

¿Puedo deshacer una modificación si cometo un error?

Sí. El programa de Git reflog rastrea las referencias de tus confirmaciones anteriores. Utiliza git reflog para encontrar el hash antiguo y recupéralo con git checkout .


Khalid Abdelaty's photo
Author
Khalid Abdelaty
LinkedIn

Ingeniero de datos con experiencia en Python y tecnologías en la nube Azure, especializado en la creación de canalizaciones de datos escalables y procesos ETL. Actualmente cursa una licenciatura en Informática en la Universidad de Tanta. Ingeniero de datos certificado por DataCamp con experiencia demostrada en gestión de datos y programación. Ex becario de Microsoft Data Engineer en la Iniciativa Digital Egypt Pioneers y Embajador de Microsoft Beta Student, dirigiendo talleres técnicos y organizando hackathons.

Temas

Aprende más sobre Git con estos cursos

Curso

Introduction to GitHub Concepts

2 h
25.8K
Learn how to use GitHub's various features, navigate the interface and perform everyday collaborative tasks.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

Tutorial

Tutorial de Git Revert y Git Reset para principiantes

Una guía tutorial para principiantes que muestra cómo utilizar los comandos Git Revert y Reset.
Zoumana Keita 's photo

Zoumana Keita

10 min

Tutorial

Tutorial de GitHub y Git para principiantes

Un tutorial para principiantes que muestra cómo funciona el control de versiones Git y por qué es crucial para los proyectos de ciencia de datos.
Abid Ali Awan's photo

Abid Ali Awan

9 min

Tutorial

Tutorial de GIT Push y Pull

Aprende a realizar solicitudes de Git PUSH y PULL con GitHub Desktop y la línea de comandos.

Olivia Smith

13 min

Tutorial

Git rename branch: Cómo cambiar el nombre de una rama local o remota

Aprende a renombrar ramas Git locales y remotas utilizando el terminal o la interfaz gráfica de usuario (GUI) de clientes populares como GitHub.

Tutorial

Git Prune: Qué es la poda Git y cómo usarla

La poda Git es un comando Git que elimina del repositorio los objetos que ya no son accesibles desde ninguna confirmación o rama, ayudando a liberar espacio en disco.

Tutorial

Git pull force: Cómo sobrescribir una rama local con una remota

Aprende por qué git pull --force no es la mejor forma de sobrescribir una rama local con la versión remota, y descubre el método adecuado utilizando git fetch y git reset.
Ver másVer más