Deshacer el último commit
Deshacer el Último Commit
Si aún no has hecho push
- 
Para mantener los cambios en el área de staging (index):
Terminal window git reset --soft HEAD~1Este comando deshace el último commit pero deja los cambios en el área de staging, listos para ser modificados y confirmados nuevamente si es necesario.
 - 
Para eliminar los cambios completamente:
Terminal window git reset --hard HEAD~1Esto elimina el último commit y los cambios que contenía. ⚠️ Precaución: Cualquier cambio en el directorio de trabajo desde el último commit se perderá.
 - 
Para modificar el commit (mensaje o archivos):
Terminal window git commit --amend -m "Nuevo mensaje"Este comando permite editar el último commit. Puedes cambiar el mensaje o añadir archivos adicionales antes de confirmar de nuevo.
 
Si ya has hecho push
- 
Revertir el commit creando un nuevo commit de reversión:
Terminal window git revert <hash_del_commit>Esto crea un nuevo commit que invierte los cambios del commit especificado, sin modificar el historial. Si hay conflictos, deberás resolverlos antes de continuar.
 - 
Obtener el hash del commit a revertir:
Terminal window git logUsa
git logpara encontrar el hash del commit que deseas revertir y úsalo en el comandogit revertde arriba. 
Opciones avanzadas (Nivel experto)
- 
Editar el historial de commits localmente:
Terminal window git rebase -i HEAD~nCon
git rebase -i, puedes modificar el historial local de commits. Esto permite cambiar el orden, combinar, editar o eliminar commits. ReemplazaHEAD~ncon el número de commits que deseas editar en el historial. - 
Forzar el push tras modificar el historial:
Terminal window git push --force-with-lease⚠️ Precaución: Solo usa
rebaseypush --force-with-leaseen ramas donde trabajas solo o en casos donde todos los colaboradores estén informados y de acuerdo en reescribir el historial. 
Explicación de los comandos y parámetros clave
- 
git reset: Restaura el índice y el directorio de trabajo a un commit específico.--soft: Deshace el commit sin modificar el índice ni el directorio de trabajo, dejando los cambios en el área de staging.--hard: Restaura el índice y el directorio de trabajo al commit especificado, eliminando cualquier cambio realizado desde ese commit.
 - 
HEAD~1: Representa el commit anterior al último.HEADes un puntero al último commit en la rama actual;~1mueve ese puntero un commit atrás. - 
--force-with-lease: Es una alternativa más segura a--forceal hacerpush. Este comando solo forzará elpushsi tu copia local está al día respecto a la versión en el remoto, previniendo sobrescribir cambios de otros colaboradores por error.