Hay diversas formas de (des)hacer cambios en Git. Pero, dependiendo que deseas deshacer es el comando que usaras. Aquí te dejo los más comunes:


Deshacer cambios antes de hacer commit

Hiciste cambios, no has puesto tus archivos en el staged area *, y quieres regresar a como tenias las cosas en el último commit. Solo debes usar el comando:

git checkout nombre_del_archivo

Así restauras un archivo que modificamos, a la version del último commit.


Por otro lado, si queremos sacar un archivo del staged area * usamos el commando:

git reset nombre_del_archivo

Podría decirse que git reset es lo contrario a git add.


* Si no sabes que es el staged area en el post de aquí te lo cuento.


Modificar un commit

En este caso, acabas de hacer un commit pero faltaron archivos o pusiste un mensaje incorrecto. No te preocupes se puede hacer algo. Si te faltaron archivos por incluir, asegurate de agregar los al staged area con git add nombre_del_archivo. Y después usa el comando:

git commit --amend


Al ejecutar el comando, sobrescribirá el último commit con lo que tenemos en el staged area. También nos abrirá el editor de texto que tengamos por defecto**, esto nos va a permitir modificar el mensaje de nuestro commit.



**Puedes cambiar el editor de texto por defecto usando el comando: git config --global core.editor "code", para usar Visual Studio Code o git config --global core.editor "atom" para usar Atom.


⚠️ De preferencia usa git commit –amend solo en repositorios locales.


Deshacer commit

Hiciste un commit y lo quieres deshacer, se puede, simplemente tienes que usar:


git revert ID_commit


El comando git revert funciona como un undo. Después de usarlo nos va a abrir el editor de texto para que escribamos un mensaje explicando porque deshicimos cierto commit. Finalmente, creara un nuevo commit con los cambios reflejados.

revert_command_pic En esta imagen vemos como el cambio “verde” de la v3 se deshizo luego de hacer revert de dicha versión.


El ID_commit es un identificador único ( o hash) que tiene tiene cada commit. El ID lo puedes obtener usando git log y es esa larga cadena de números y letras, de hecho tiene 40 caracteres. Después de usar git log, aprieta la tecla Q para salir/continuar.


Regresar a un commit especifico

Supongamos que hiciste muchos cambios (v1, v2, v3, “version actual”) y quieres regresar a la v2. Puedes regresar a un commit especifico usando:

git checkout ID_commit


Eso sí que será viajar en el tiempo, pues los commit posteriores a v2 no existirán más. En la siguiente imagen lo ilustro mejor.


time_travel_pic En esta imagen vemos como los commits v3 y “versión actual” desaparecen, pues regresamos totalmente a v2.


⚠️ Regresará todo a como estaba en el commit que decidas. Eliminando archivos, lineas, commits posteriores, etc.



Esos son algunos comandos (los que más uso) para deshacer cambios. Espero esta pequeña compilación te sea útil para “viajar en el tiempo” y te evite sufrir por cambios indeseables. Más adelante hablare de como las branches/ramas pueden ser muy útiles para hacer pruebas (y evitarnos viajes en el tiempo).

¿Qué otros comandos conoces para deshacer cambios? Dejalos en los comentarios 😃.


Iconos diseñados por Smashicons from www.flaticon.es