git reset --hard - ¿Cómo puedo revertir un repositorio Git a una confirmación anterior?

git revert commit pushed / git / git-checkout / git-reset / git-revert

¿Cómo puedo revertir mi estado actual a una instantánea realizada en un determinado commit?

$ git log
commit a867b4af366350be2e7c21b8de9cc6504678a61b`
Author: Me <me@me.com>
Date:   Thu Nov 4 18:59:41 2010 -0400

blah blah blah...

commit 25eee4caef46ae64aa08e8ab3f988bc917ee1ce4
Author: Me <me@me.com>
Date:   Thu Nov 4 05:13:39 2010 -0400

more blah blah blah...

commit 0766c053c0ea2035e90f504928f8df3c9363b8bd
Author: Me <me@me.com>
Date:   Thu Nov 4 00:55:06 2010 -0400

And yet more blah blah...

commit 0d1d7fc32e5a947fbd92ee598033d85bfc445a50
Author: Me <me@me.com>
Date:   Wed Nov 3 23:56:08 2010 -0400

Yep, more blah blah.

Paolo



Answer #1
git checkout <commit_id>
git checkout -b <new branch> <commit_id>
git checkout HEAD~X // x es el número de confirmaciones t volver

En este punto puedes crear una rama y empezar a trabajar desde este punto:

# Verifique una confirmación determinada.
# Hacerlo resultará en un "HEAD" separado, lo que significa que el "HEAD"
# no apunta a la última, por lo que tendrá que pagar la sucursal
# para poder actualizar el código.
git checkout <commit-id>

# Crea una nueva rama bifurcada a la confirmación dada
git checkout -b <branch name>
git reflog
git checkout HEAD@{...}

"Mueve" tu cabeza hacia atrás al compromiso deseado.

# Esto destruirá cualquier modificación local.
# No lo haga si tiene un trabajo no comprometido que desea conservar.
git reset --hard 0d1d7fc32

# Alternativamente, si hay trabajo que mantener:
git stash
git reset --hard 0d1d7fc32
git stash pop
# Esto guarda las modificaciones, luego vuelve a aplicar ese parche después de reiniciar.
# Podrías tener conflictos de fusión, si has modificado cosas que estaban
# cambió desde la confirmación a la que restableció.