Manera correcta de descartar cambios en Git

He visto muchos enfoques diferentes para descartar cambios / revertir a una confirmación previa usando Git. Normalmente puedo descubrir qué funciona para mi situación, pero en el process me he confundido bastante con los diferentes enfoques. Más recientemente intenté deshacer algunos cambios en el nombre de los files y, sin importar lo mucho que intenté git checkout las versiones antiguas de los files, aún no pude recuperar mis files anteriores.

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


1) git checkout -- .

  • Usado para pagar la última versión de los files, sobrescribirá los viejos, pero no afectará a los files eliminados, renombrados o nuevos.

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

  • Arrastra los files no confirmados, luego los descarta por completo. Buen enfoque si ha confirmado cambios que desea conservar y cambios no confirmados / no supervisados ​​que desea descartar.

3) git reset --hard

  • Limpia todo desde la última confirmación, incluidos los cambios de nombre de file, eliminaciones y adiciones.

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

Publicaciones de origen:

  • Parece que no puede descartar los cambios en Git
  • ¿Cómo descarto cambios no realizados en Git?
  • GIT Descarta cualquier cambio que haya realizado en una sucursal

 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.

Tus otras elecciones son destructivas.

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