HOWTO · Git

Revertir una confirmación modificada en Git

Revierte los efectos del comando de modificación de confirmación de Git.

En esta página

Este artículo describe cómo revertir el comando git commit --amend. Usamos este comando para agregar archivos a una confirmación anterior para mantener nuestro repositorio limpio.

En un escenario donde usamos el comando por error, ¿cómo revertiríamos los efectos?

Revertir una confirmación modificada en Git

Echemos un vistazo al siguiente ejemplo.

En el siguiente ejemplo, hemos utilizado el comando git commit --amend para agregar cambios de archivo a la última confirmación en nuestra rama maestra.

git commit –enmendar

Queremos deshacer la modificación y enviar el archivo por separado. ¿Cómo hacemos esto?

Tendremos que mover nuestro HEAD actual para que apunte a la confirmación anterior antes de que se moviera HEAD. Podemos hacer esto ejecutando el siguiente comando.

$ git reset --soft HEAD@{1}

Tenga en cuenta que usamos HEAD@{1} en lugar de HEAD~1. Este último nos llevará al nodo padre del HEAD actual, que no es lo que deseamos.

Esto debería restaurar la confirmación anterior tal como estaba antes de la modificación. Ahora deberíamos tener nuestro archivo modificado en el índice.

Confirmemos nuestro caso con el comando git status.

estado de Git

Alternativamente, puede ejecutar el comando git reflog para obtener el antiguo hash de confirmación antes de que lo modifiquemos. De cualquier manera, tanto HEAD@{1} como el antiguo hash de confirmación combinado con el comando git reset --soft llegarán al mismo destino.

Ahora podemos enviar el archivo de la manera convencional.

$ git commit -m "Modify run.py"

Ahora tenemos una confirmación separada para nuestro archivo modificado.

En pocas palabras, podemos revertir los efectos del comando git commit --amend usando el comando git reset --soft. Tenga en cuenta que HEAD@{1} es diferente de HEAD~1.