Cómo deshacer un git pull y volver a un commit anterior en Git

Introducción

A veces, después de hacer un git pull, te das cuenta de que algo salió mal: tal vez se eliminó accidentalmente una carpeta importante o se introdujeron cambios no deseados. Afortunadamente, Git te permite deshacer un git pull y volver a un commit anterior para restaurar el estado del repositorio. En este artículo, te guiaré a través de un ejemplo práctico paso a paso sobre cómo hacerlo.

Requisitos previos

  • Git instalado en tu máquina.
  • Acceso al repositorio en cuestión.
  • Familiaridad básica con comandos de Git.

Paso 1: Verifica el historial de Git con reflog

Lo primero que debes hacer es identificar el commit anterior al git pull que quieres deshacer. Para esto, usaremos el comando git reflog, que muestra un historial detallado de las acciones recientes en el repositorio, incluidas las referencias a commits.

Abre una terminal o línea de comandos y navega a tu repositorio:

 

cd Repo

Luego, ejecuta:

2f10b05 (HEAD -> master, origin/master) HEAD@{0}: pull: Fast-forward
414b196 HEAD@{1}: commit (merge): Resolved merge conflicts
6efd60a HEAD@{2}: commit: feat: setup pre-production environment
a4012f2 HEAD@{3}: commit: rokitoh
ff101f9 (tag: 0.0.0-KO, origin/release, origin/hotfix, origin/develop, origin/HEAD, develop) HEAD@{4}: checkout: moving from develop to master
ff101f9 (tag: 0.0.0-KO, origin/release, origin/hotfix, origin/develop, origin/HEAD, develop) HEAD@{5}: clone: from https://github.com/redorbita/redorbita__iac.git

En este caso, el commit a4012f2 es el que queremos restaurar, justo antes del git pull que hicimos.

Paso 2: Restablece el repositorio al commit anterior con git reset

Una vez que hayas identificado el commit deseado (en este ejemplo, a4012f2), puedes usar git reset para volver a ese punto en el historial.

Si deseas volver completamente al estado anterior, sin conservar ningún cambio introducido por el git pull, usa el siguiente comando:

 

git reset --hard a4012f2

¿Qué hace git reset --hard?

Este comando restablece tu repositorio exactamente al estado en que estaba en el commit a4012f2. El modificador --hard indica que se eliminarán todos los cambios que no se hayan confirmado, incluidas las modificaciones en los archivos de tu área de trabajo.

Paso 3: Verifica el estado del repositorio

Después de ejecutar el comando de reset, es recomendable verificar el estado de tu repositorio para asegurarte de que todo está como esperas.

Ejecuta el siguiente comando:

 

git status

Deberías ver un mensaje que indica que el repositorio está en la rama master y que no hay cambios pendientes:

On branch master
Your branch is up to date with 'origin/master'.

nothing to commit, working tree clean

Paso 4: Verifica que la carpeta eliminada ha sido restaurada

Navega por el repositorio o usa comandos de exploración de archivos (ls, dir, etc.) para verificar que la carpeta que había sido eliminada por el git pull ahora está de nuevo presente.

Paso 5 (Opcional): Deshacer el pull pero mantener los cambios locales

Si, en lugar de perder todos los cambios locales, deseas mantener los archivos modificados en tu área de trabajo pero deshacer el git pull, puedes usar git reset --soft en lugar de --hard.

 

git reset --soft a4012f2

Con esta opción, se deshará el pull, pero los archivos seguirán marcados como modificados (no se eliminarán los cambios locales no confirmados).

Conclusión

Restaurar tu repositorio a un estado anterior a un git pull es una acción útil cuando los cambios no deseados se introducen en tu código. Con git reset, puedes volver al estado anterior de manera rápida y eficiente. Solo recuerda que, si utilizas la opción --hard, cualquier cambio no confirmado se perderá, así que úsala con precaución.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *