git checkout todos los archivos

127

¿Cómo puedo deshacerme de todos los cambios en todos los archivos de mi repositorio?

Digamos que estoy en una sucursal e hice algunos cambios. git statusdevuelve un conjunto de archivos en "Cambios no organizados para confirmación" y me doy cuenta de que me gustaría deshacerme de todos estos cambios en todos los archivos. ¿Cómo puedo hacer esto con un solo comando?

Sé que puedo hacer lo siguiente para pagar solo un archivo:

git checkout -- <file>

Noté que git checkout --solo devuelve la lista de todos los archivos no confirmados. Sin embargo, no puedo encontrar una manera de verificarlos, algo así git checkout --all.

Lo comprobé man git checkouty no pude encontrar nada. También vi Git: desproteger todos los archivos excepto uno e intenté git checkout .y tampoco funcionó.

¿Tendría que hacerlo programáticamente, recorriendo la git checkout --salida?

fedorqui 'así que deja de dañar'
fuente

Respuestas:

193

Si está en la raíz de su directorio de trabajo, puede hacer git checkout -- . para retirar todos los archivos en el HEAD actual y reemplazar sus archivos locales.

También puede hacer git reset --hardpara restablecer su directorio de trabajo y reemplazar todos los cambios (incluido el índice).

dar un toque
fuente
son las dos opciones equivalentes (si restablecemos a HEAD)?
lucidbrot
10
No, hay ciertas diferencias. Por ejemplo git checkout -- ., solo restablecerá los cambios al estado del índice. Entonces, si ya ha agregado archivos al índice, a eso se restablecerá. Por otro lado git reset --hard, también eliminará el índice, por lo que, por ejemplo, si ha agregado archivos sin seguimiento al índice (para comenzar a rastrearlos), también se eliminarán. git checkouttambién le permite restaurar solo el directorio de trabajo parcialmente al pasar una ruta más específica que puede ser muy útil.
Poke
1
@vinaykumarreddy Significado de Git checkout dobles guiones
toque el
44
@poke Hola Poke, estoy seguro de que git checkout -. no funciona Lo probé para múltiples cambios no organizados.
Aman
2
otros comandos para lograr el mismo resultado: git checkout --force,git reset --hard
Tjalling
3

Otra forma que encontré útil es:

git checkout <wildcard> 

Ejemplo:

git checkout *.html

Más generalmente:

git checkout <branch> <filename/wildcard>
Singhak
fuente
1
Si está habilitado el globbing en su shell y hay archivos no rastreados en el directorio de trabajo, esto fallará a menos que salga del asterisco, por ejemplo, git checkout \*o git checkout '*'.
Josh Cooley