2011-01-07 16 views
222

¿Cómo puedo deshacer cada cambio realizado en mi directorio después de la última confirmación, incluyendo eliminar archivos agregados, restablecer archivos modificados y agregar archivos eliminados?Restablecer todos los cambios después de la última confirmación en git

+0

posible duplicado de [Volver a la última confirmación de Git] (http://stackoverflow.com/questions/4114095/revert-to-previous-git-commit) – nawfal

+1

@nawfal puede ser un duplicado, pero 'restablecer todos los cambios después la última confirmación 'coincide con más criterios de búsqueda (palabras buscadas en google) que con' cómo revertir el repositorio de git '. Al menos para personas como yo, que no tienen el inglés como lengua materna: d –

Respuesta

409

Primera restablecer los cambios

git reset HEAD --hard 

luego limpiar todo sin seguimiento. Si desea conservar los archivos que no se rastrean debido al .gitignore, tenga cuidado con este comando.

git clean -fd 
+6

@Adam: a veces, también puede querer la opción '-x' a' git clean', lo que le indica que también elimine los archivos ignorados. – Cascabel

+23

Si desea conservar los archivos que no se rastrean debido a .gitignore, tenga cuidado con el comando 'git clean -fd'. – bitsoflogic

+3

@Levinaris: es al revés que 'git clean -fd' no eliminará los archivos ignorados. '-x' lo hará. –

32

¿Cómo se puede deshacer lo cada cambio hecho a mi directorio después de la última confirmación, incluyendo la eliminación de archivos añadidos, al restaurar los archivos modificados, y volviendo a añadir archivos borrados?

  1. Puede deshacer los cambios en rastreados archivos con:

    git reset HEAD --hard 
    
  2. Puede eliminar sin seguimiento archivos con:

    git clean -f 
    
  3. Puede eliminar sin seguimiento archivos y directorios con:

    git clean -fd 
    

    pero no se puede deshacer el cambio a los archivos sin seguimiento.

  4. Puede eliminar ignorados y sin seguimiento archivos y directorios

    git clean -fdx 
    

    pero no se puede deshacer el cambio de ficheros ignorados.

Puede establecer clean.requireForce a false:

git config --global --add clean.requireForce false 

evitar el uso de -f (--force) cuando se utiliza git clean.

+1

Impresionante, justo lo que necesitaba. Gracias por la comparación de todos los comandos relevantes! – Marquee

Cuestiones relacionadas