Revertir una confirmación modificada en Git

John Wachira 15 febrero 2024
Revertir una confirmación modificada en Git

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.

John Wachira avatar John Wachira avatar

John is a Git and PowerShell geek. He uses his expertise in the version control system to help businesses manage their source code. According to him, Shell scripting is the number one choice for automating the management of systems.

LinkedIn

Artículo relacionado - Git Commit