Cómo deshacer los últimos commits locales en Git

¿Has hecho uno o varios commits de algunos cambios en el código que aún no has subido y quieres deshacerlo? ¡Te enseñamos cómo!

deshacer-ultimos-commit-locales-git

Mientras trabajas con el código de un proyecto localmente, en lo que se conoce como entorno DEV o entorno de desarrollo, seguramente, en más de una ocasión, te habrás encontrado en la situación de arrepentirte del mensaje que escribiste al hacer un commit o simplemente quieras realizar algún cambio adicional sin que quede registrado en el historial de Git.

En este artículo veremos cómo deshacer los cambios si aún no has hecho push al repositorio remoto.

Deshacer los commits locales más recientes en Git puede realizarse de varias maneras, dependiendo de si deseas conservar los cambios o descartarlos por completo. A continuación, explicaremos cómo hacerlo.

Instrucción Git Reset

La instrucción git reset permite establecer el estado de la rama (branch) en la que te encuentras a un estado específico. Hay 3 modos: --soft, --mixed, --hard.

Modo soft

Si quieres deshacer el último commit pero mantener los cambios para modificarlos o descartarlos más adelante, puedes usar el comando:

Terminal
git reset --soft HEAD~1
  • La opción --soft mueve el puntero de la rama al commit especificado, pero mantiene los cambios realizados en tu área de trabajo y en el área de preparación (staging area). Es decir, al ejecutar el reset, los cambios permanecen preparados para volver a hacer commit o pueden ser descartados según decidas.
  • Head~1 hace referencia al commit inmediatamente anterior al actual (HEAD). Esto indica que el comando reset deshará el commit más reciente, manteniendo los cambios realizados en él.

Modo mixed

Si quieres mantener los cambios en el área de trabajo (working directory), pero quitarlos del área de preparación (staging area), puedes usar:

Terminal
git reset --mixed HEAD~1
  • La opción --mixed mueve el puntero de la branch al commit especificado y deshace los cambios del área de preparación (staging area), devolviéndolos al área de trabajo (working directory). Esto significa que los archivos siguen modificados, pero no están preparados para el commit.

Modo hard

Si lo que quieres es decartar completamente los cambios tanto del área de preparación como del área de trabajo

Terminal
git reset --hard HEAD~1

Nota Usa estas opciones con cuidado, especialmente —hard, ya que puede provocar pérdida de datos.

Deshacer múltiples commits

Simplemente basta con especificar el número de commits que quieras deshacer a partir del HEAD hacia atrás, por ejemplo:

Terminal
git reset --soft HEAD~4

Deshará los últimos 4 commits desde el HEAD.