
Diferentes situaciones por las que te arrepientes de lo que has hecho.

Git Checkout
Para eliminar los cambios del working directory.
Con el comando git checkout reemplaza todo lo que hay en el working directory por la última versión aprobada (HEAD).
Checkout admite trabajar con fichero y con ramas. Para indicarle que se trata de un fichero, se lo indicaremos con «–«. Git interpretará que lo que viene después de — es el nombre de un fichero. Si no, es una rama.
Para hacer checkout en la rama master sería
$git checkout master
Para hacer checkout en el fichero master es
$git checkout -- master
Y el comando siguiente forzaría el reemplazo de de todos los archivos. Pasaría todo lo que hay en el último commit al working directory:
$git checkout HEAD -- .
Git Reset
Para eliminar los cambios almacenados en el Staging.
Si tienes algo en el staging (cambios aceptados con el add) y quieres eliminarlo, usa el reset.
$git reset HEAD ficheroCambiado
Lo eliminará de la zona staging y lo pasará al working directory.
Si resulta que en el staging tienes varios fichero y quieres traerlos todos, debes indicarlo añadiendo un «.» Pero también puedes elegir una lista de ficheros. En ese caso, escribe sus nombres separados por un espacio.
$git reset HEAD .
$git reset documento fichero1 fichero2
Git Reset Hard
Para eliminar los cambios en el Staging y el working directory.
Si tienes un escenario en el que has trabajado, hecho algún add y has hecho cambios en el working directory pero resulta que quieres deshacerlo todo. Es decir, borrarlo todo (lo que está en staging y lo que hay en working directory) puedes usar el comando siguiente. Te devolverá la última versión aprobada. O sea, al último commit (HEAD).
$git reset --hard
Git Revert
Para eliminar los cambios aprobados con un commit.
Es decir, para eliminar los commits hechos.
Si modificaste un archivo y has hecho un commit y luego te das cuenta de que hay un error, puedes revertir ese commit. El comando creará un nuevo commit en el histórico quedará registrada la inversión por lo que puedes volver a él otra ves.
El comando git reset HEAD~1 tiene el mismo efecto y borrará el commit creado con el revert.
$git reset HEAD~1
Lo interesante es que puede hacer revert de varios commits de una sola vez. Usa el carácter «~» como si fuera un signo de resta. Por ejemplo, HEAD~3, son tres commit desde el HEAD. Si o combinas con «…» indicarás un rango entre dos commit.
$git revert
$git rever HEAD...HEAD~3
$git rever HEAD…HEAD~3 revierte los commits hechos entre el HEAD y el HEAD~3.
Si en un revert, no tienes ganas de pasar uno a uno por los cambios del rango seleccionado, puedes hacer así:
$git revert HEAD...HEAD~2 --no-edit
Para eliminar los cambios del working directory.
Con el comando git checkout reemplaza todo lo que hay en el working directory por la última versión aprobada (HEAD).
Checkout admite trabajar con fichero y con ramas. Para indicarle que se trata de un fichero, se lo indicaremos con «–«. Git interpretará que lo que viene después de — es el nombre de un fichero. Si no, es una rama.
Para hacer checkout en la rama master sería.
$git checkout master
Para hacer checkout en el fichero master es
$git checkout -- master
Y el comando siguiente forzaría el reemplazo de de todos los archivos. Pasaría todo lo que hay en el último commit al working directory:
$git checkout HEAD -- .
Git Reset
Para eliminar los cambios almacenados en el Staging.
Si tienes algo en el staging (cambios aceptados con el add) y quieres eliminarlo, usa el reset.
$git reset HEAD ficheroCambiado
Lo eliminará de la zona staging y lo pasará al working directory.
Si resulta que en el staging tienes varios fichero y quieres traerlos todos, debes indicarlo añadiendo un «.» Pero también puedes elegir una lista de ficheros. En ese caso, escribe sus nombres separados por un espacio.
$git reset HEAD .
$git reset documento fichero1 fichero2
Git Reset Hard
Para eliminar los cambios en el Staging y el working directory.
Si tienes un escenario en el que has trabajado, hecho algún add y has hecho cambios en el working directory pero resulta que quieres deshacerlo todo. Es decir, borrarlo todo (lo que está en staging y lo que hay en working directory) puedes usar el comando siguiente. Te devolverá la última versión aprobada. O sea, al último commit (HEAD).
$git reset --hard
Git Revert
Para eliminar los cambios aprobados con un commit.
Es decir, para eliminar los commits hechos.
Si modificaste un archivo y has hecho un commit y luego te das cuenta de que hay un error, puedes revertir ese commit. El comando creará un nuevo commit en el histórico quedará registrada la inversión por lo que puedes volver a él otra ves.
El comando git reset HEAD~1 tiene el mismo efecto y borrará el commit creado con el revert.
$git reset HEAD~1
Lo interesante es que puede hacer revert de varios commits de una sola vez. Usa el carácter «~» como si fuera un signo de resta. Por ejemplo, HEAD~3, son tres commit desde el HEAD. Si o combinas con «…» indicarás un rango entre dos commit.
$git revert
$git rever HEAD...HEAD~3
$git rever HEAD…HEAD~3 revierte los commits hechos entre el HEAD y el HEAD~3.
Si en un revert, no tienes ganas de pasar uno a uno por los cambios del rango seleccionado, puedes hacer así:
$git revert HEAD...HEAD~2 --no-edit