Cómo deshacer los últimos commits de Git en local

Deshacer cambios en Git es muy sencillo y tan solo hay que ejecutar 3 comandos.

Cómo deshacer los últimos commits de Git en local

¿Cuántas veces nos habremos equivocado usando Git y hemos hecho un commit de algo que no queríamos? En mi caso, muchas veces. La buena noticia es que es posible deshacer los últimos commits de Git en local.

Supongamos que haces un git add . y luego haces un commit, que será el que hay que deshacer:

git commit -m "I will undo this commit message"

Los pasos que vamos a seguir para deshacer un commit en local son:

  1. Deshacer el cambio
  2. Hacer las correcciones necesarias a nuestro código
  3. Añadir de nuevo los cambios
  4. Hacer el commit de nuevo

Deshacer un commit en local

Para deshacer un commit en local ejecutaremos el siguiente comando:

git reset HEAD~

git reset es el comando responsable de deshacer los cambios. Deshará tu último commit dejando tu proyecto sin modificar, es decir, que no perderás los cambios que hayas hecho.

Modificar los archivos en local

Ya que hemos deshecho un commit porque hemos encontrado un error en los cambios que habíamos añadido, en este paso simplemente habrá que modificar los archivos necesarios para arreglar el problema.

Añadir de nuevo los cambios

Simplemente habrá que ejecutar git add . de nuevo. Si no quieres añadir todos, especifica el nombre de los archivos que quieres añadir con:

git add file_1.txt file_2.txt

Hacer un commit con los cambios aplicados

Tras haber solucionado el problema, ya podremos volver a realizar de nuevo el commit. Tenemos dos opciones: utilizar el mismo mensaje de commit que habíamos escrito antes o modificarlo.

Para reutilizar el mismo mensaje de commit sin modificarlo:

git commit ORIG_HEAD

Si quisiéramos modificarlo, también podríamos añadir la opción -c:

git commit -c ORIG_HEAD

Esto abrirá un editor de texto para poder modificar el commit. Si no, también podéis utilizar el amend, que es lo que yo suelo usar:

git commit --amend

También nos abrirá un editor de texto para que podamos modificar el mensaje de commit.

¡Y con esto, ya tendremos el cambio deshecho en Git, arreglado y commiteado!