- Published on
- May 5, 2020
¿Cómo viajar en el tiempo con Git?
- Authors
- Name
- Tania Zúñiga
- tanx
- @tanx
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:
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.
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.
Hiciste un commit y lo quieres deshacer, se puede, simplemente tienes que usar:
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.
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.
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.
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 😃.