¿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!
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.
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
.
Si quieres deshacer el último commit pero mantener los cambios para modificarlos o descartarlos más adelante, puedes usar el comando:
git reset --soft HEAD~1
--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.Si quieres mantener los cambios en el área de trabajo (working directory), pero quitarlos del área de preparación (staging area), puedes usar:
git reset --mixed HEAD~1
--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.Si lo que quieres es decartar completamente los cambios tanto del área de preparación como del área de trabajo
git reset --hard HEAD~1
Nota Usa estas opciones con cuidado, especialmente —hard, ya que puede provocar pérdida de datos.
Simplemente basta con especificar el número de commits que quieras deshacer a partir del HEAD hacia atrás, por ejemplo:
git reset --soft HEAD~4
Deshará los últimos 4 commits desde el HEAD.