2011-05-15 21 views
18

He reducido el código de mi repositorio, lo que ha estropeado las cosas. Me gustaría revertir todo mi proyecto a mi última confirmación local. ¿Cómo haría esto?¿Volver a la confirmación local?

Respuesta

42

Esto restablecerá todo a su actual Commit (para deshacerse de todos los cambios, gradual o de otro modo:

git reset HEAD --hard 

Esto restablecerá todo al anterior cometer (que se deshace de todos los cambios, gradual o de otra manera)

git reset HEAD^ --hard 

la^junto a la cabeza significa uno commit antes de cabeza, cabeza del ser donde yo estás actualmente. Puede recuperar dos confirmaciones usando ^^, o tres con ^^^. Además, puede usar una tilde para especificar el número de confirmaciones: ~ 3 para tres confirmaciones.

git reset HEAD~3 --hard 

También tenga en cuenta que la opción --hard significa que estos comandos descartarán cualquier cambio que tenga que no esté guardado.

+3

Siempre es bueno ver las advertencias de seguridad apropiadas adjuntas a la sugerencia de usar 'git reset --hard', como en esta respuesta - un número preocupante de respuestas de stackoverflow no ... –

+0

Advertencia masiva de" Si Hice un tirón ya que su compromiso local esto nukeará su compromiso local ":) vea esto para deshacer dicho dolor de bola http://gitready.com/advanced/2009/01/17/restoring-lost-commits.html –

+0

@ Lo bueno de EdBishop sobre Git es que casi nunca se pierde nada –

10

Localice su última confirmación local en git log y ejecute git reset --hard <commit sha1>.

Eliminará todos los cambios locales que no haya cometido, y moverá el HEAD a este compromiso.

2

git pull puede recuperar y fusionar varias confirmaciones. Para volver a su estado local anterior (en lugar de back n-commits) puede usar reflog. git reset --hard @{1}

+0

¡Muchas gracias! ¡Ahorré muchísimo trabajo! – AbsoluteSith

Cuestiones relacionadas