Deshacer modificaciones de la copia de trabajo de un archivo en Git
Después de la última confirmación, modifiqué varios archivos en mi copia de trabajo, pero quiero deshacer los cambios en uno de esos archivos, es decir, restablecerlo al mismo estado que la confirmación más reciente.
Sin embargo, solo quiero deshacer los cambios de la copia de trabajo de ese único archivo, nada más.
¿Cómo puedo hacer eso?
Puedes usar
git checkout -- file
Puede hacerlo sin --
(como lo sugiere nimrodm), pero si el nombre del archivo parece una rama o etiqueta (u otro identificador de revisión), puede confundirse, por lo que --
es mejor usarlo.
También puede consultar una versión particular de un archivo:
git checkout v1.2.3 -- file # tag v1.2.3
git checkout stable -- file # stable branch
git checkout origin/master -- file # upstream master
git checkout HEAD -- file # the version from the most recent commit
git checkout HEAD^ -- file # the version before the most recent commit
Más detalles incluidos basados en comentarios.
Primero verifique las confirmaciones del archivo.
git log -- <filename>
Entonces puedes ejecutar esto
git checkout <sha-reference> -- filename
donde sha-reference es una referencia al sha de una confirmación, en cualquier forma (rama, etiqueta, padre, etc.
Solo usa
git checkout filename
Esto reemplazará el nombre del archivo con la última versión de la rama actual.
ADVERTENCIA: sus cambios se descartarán; no se conserva ninguna copia de seguridad.
git checkout <commit> <filename>
Utilicé esto hoy porque me di cuenta de que mi favicon había sido sobrescrito hace algunas confirmaciones cuando actualicé a drupal 6.10, así que tuve que recuperarlo. Aquí esta lo que hice:
git checkout 088ecd favicon.ico
Si su archivo ya está preparado (sucede cuando realiza un git add, etc. después de editar el archivo), elimine los cambios.
Usar
git reset HEAD <file>
Entonces
git checkout <file>
Si aún no está preparado, simplemente use
git checkout <file>