2012-08-14 28 views
9

He visto muchos enfoques diferentes para descartar cambios/revertir a una confirmación anterior usando Git. Normalmente puedo descubrir qué funciona para mi situación, pero en el proceso me he confundido bastante con los diferentes enfoques. Más recientemente intenté deshacer algunos cambios de nombre de archivo y no importa cuánto intente git checkout las versiones anteriores de los archivos, aún no pude recuperar mis archivos anteriores.Manera correcta de descartar cambios en Git

Estoy buscando aclaraciones sobre qué enfoque utilizar y por qué. Aquí está mi entendimiento de algunos enfoques. Me doy cuenta de que la respuesta puede ser muy contextual, pero me gustaría tratar de determinar qué contextos requieren qué enfoques.


1) git checkout -- .

  • Se utiliza para la comprobación de la versión más reciente de los archivos, se sobreponen a los archivos de edad, pero no afectará eliminado, cambiado de nombre o nuevos archivos.

2) git stash save --keep-index seguido por git stash drop

  • stashes archivos no comprometidos, a continuación, los deja caer por completo. Buen enfoque si ha confirmado cambios que desea conservar y cambios no confirmados/no supervisados ​​que desea descartar.

3) git reset --hard

  • borra todo desde la última confirmación, incluyendo el archivo cambia el nombre, supresiones y adiciones.

Ésta es mi actual comprensión de mis opciones. ¿Hay algún cambio que harías en mis explicaciones? Tampoco estoy seguro de cuándo usaría un git revert en lugar de los comandos anteriores.

mensajes Fuente:

Respuesta

9
git stash -u 

es la forma preferida. No te caigas Ellos no serán empujados. En caso de que hayas destruido algo que descubriste que era importante, puedes recuperarlo.

Sus otras opciones son destructivas.

Revert agrega una nueva confirmación al historial que aplica lo contrario de un parche que ha introducido una confirmación. Sus elecciones aquí son para lo que quiere hacer con los cambios en su árbol de trabajo que aún no son parte de la historia. Revertir es para cambios comprometidos que son parte de la historia.

+0

¿Qué -u hacer? Realmente no quiero llenar mi stash stack con un código que no necesito. –

+0

No se preocupe por llenar su escondite. '-u' almacena archivos no rastreados además de los rastreados. Le permite comportarse como lo hace el reinicio. –

Cuestiones relacionadas