Hola cracks, este post será al grano y a la vez muy útil. Debo decirte también que ejecutes estos comandos con cautela, es decir con entera responsabilidad. Empecemos!
Hay dos escenarios cuando de deshacer un commit se trata:
Cuando aún no has hecho push
Para deshacer el último commit: git reset --soft HEAD~
Si deseas deshacer los últimos 3 commit: git reset --soft HEAD~3
Luego tendrás que hacer unstage de los archivos: git restore . --staged
Luego restaurar los cambios que no estaban en el staging area: git restore .
Eso sería todo 🙌
Ahora, si lo que quieres es deshacer el último commit y no conservar los cambios (ahorrarte los restore) ejecuta: git reset --hard HEAD~1. Puedes reemplazar el 1 por el números de commits que quieres eliminar/deshacer.
Cuando ya 'pusheaste'
Para estos casos debes obtener el ID del commit al que quieres revertir con: git log
Revertir commit con: git revert [COMMIT ID]
Esto creará un nuevo commit que deshace los cambios del commit especificado. En otras palabras el estado de tu proyecto después de ejecutar git revert será como si el commit especificado nunca hubiese ocurrido, pero sin eliminar el historial de cambios.
Ten en cuenta que si el commit que quieres revertir no es el último hecho, entonces git intentará revertir los cambios automáticamente y sin generar conflictos generalmente. Sin embargo si el intentar deshacer esos cambios entra en conflicto con un commit más reciente, git detendrá el proceso y te indicará los conflictos y tendrás que resolverlos manualmente.
Si esta entrada te sirve, compártela ✌️😎