Git: Comandos (git reset, git reflog, git revert)

Apr. 18, 2023

Git reset es un comando que nos ayuda a deshacer uno o varios commits con el fin de revertir sus efectos, git revert tambi茅n puede ayudarnos con esta tarea, pero lo hace de una manera diferente. En este post revisaremos que comando deber铆amos usar y otros comandos de ayuda…馃悿

Git reset

Git reset nos permite revertir uno o varios commits, devolviendo nuestro proyecto a un estado anterior. Este comando es 煤til si a煤n no hemos subido el commit a GitHub, ya que reescribe el historial de commits y puede complicar la colaboraci贸n con otros desarrolladores.

En caso de que ya hayamos subido el commit a GitHub, se recomienda usar git reverten su lugar.

i1

Git reset ofrece tres opciones de bandera que determinan c贸mo se eliminan los commits:

–mixed

Usando git reset con esta bandera (si no la pones es la funci贸n por defecto –mixed) lo que pasara es que git eliminara los commits que hubo despu茅s del commit al que quieras regresar.

Eliminar谩 los commits, pero los cambios seguiran en el working directory.

git reset --mixed <ID del commit>

o

git reset <ID del commit>

Podemos observar en el siguiente video c贸mo funciona este comando:

g1

–soft

Usando git reset con esta bandera lo que pasara es que git eliminara los commits que hubo despu茅s del commit al que quieras regresar, de igual manera que usando la bandera mixed tambien los cambios en el proyecto seguir谩n, solo que con la bandera soft los cambios estar谩n en el stage area.

git reset --soft <ID del commit>

Podemos observar en el siguiente video c贸mo funciona este comando:

g2

–hard

Usando esta bandera con git reset, lo que pasara es que se eliminara todo lo que contengan los commits posteriores al seleccionado.

git reset --hard <ID del commit>

Podemos observar en el siguiente video c贸mo funciona este comando:

g3

Puedes observar un resumen en esta imagen:

i2

Git reflog

Git reflog registra todos los movimientos que se han hecho, incluso si se eliminan los commits. Este comando es 煤til si necesitamos deshacer cambios que se hicieron hace varios commits.

Entonces lo que haremos es:

Podemos usar git reflog para mostrar todos los movimientos realizados y encontrar el ID del commit al que queremos regresar. Luego, usamos git reset –hard con el ID del commit para regresar a ese punto espec铆fico.

git reflog
git reset --hard <ID del commit>

g4

Git revert

Git revert tambien deshace commits anteriores, pero lo que este comando hace en vez de sobrescribir el historial de commits como con git reset, este crea un commit completamente nuevo sin los cambios que hab铆a en ese commit que no deseamos.

git revert

Es decir, invierte los cambios implementados en ese commit que no dese谩bamos y agrega un nuevo commit con el efecto contrario.

Quizas puedas entenderlo mejor con esta imagen:

i3

Ahora vamos a deshacer un commit con git revert:

g5

Podemos observar c贸mo git revert, hace lo contrario al commit que queremos eliminar.

En este caso el commit que yo queria eliminar, contenia la creaci贸n de un nuevo archivo, por lo que al ejecutar git revert lo elimina, dej谩ndolo listo para hacer un nuevo commit con los cambios.

En este post, hemos explorado tres comandos de Git esenciales: git reset, git reflog y git revert. Cada comando tiene un prop贸sito espec铆fico y puede ser 煤til en diferentes situaciones. Esperamos que esta informaci贸n sea 煤til para tu pr贸ximo proyecto de programaci贸n. 隆Feliz codificaci贸n! 馃殌

Deseando que te encuentres bien, te saluda Ulises馃さ… S铆gueme en mis redes GitHub LinkedIn Twitter