git checkout todos os arquivos

127

Como posso me livrar de todas as alterações em todos os arquivos do meu repositório?

Digamos que eu esteja em um galho e fiz algumas alterações. git statusretorna um conjunto de arquivos em "Alterações não faseadas para confirmação" e percebo que gostaria de me livrar de todas essas alterações em todos os arquivos. Como posso fazer isso com um único comando?

Sei que posso fazer o seguinte para efetuar o checkout de apenas um arquivo:

git checkout -- <file>

Percebi que git checkout --sozinho retorna a lista de todos os arquivos não enviados. No entanto, não consigo encontrar uma maneira de fazer check-out de todos eles, algo assim git checkout --all.

Eu verifiquei man git checkoute não consegui encontrar nada. Também vi o Git: verifique todos os arquivos, exceto um, e tentei git checkout .e também não funcionou.

Eu precisaria fazer isso programaticamente, percorrendo a git checkout --saída?

fedorqui 'Então pare de prejudicar'
fonte

Respostas:

193

Se você estiver na raiz do seu diretório de trabalho, faça o git checkout -- .check-out de todos os arquivos no HEAD atual e substitua os arquivos locais.

Você também pode git reset --hardredefinir seu diretório de trabalho e substituir todas as alterações (incluindo o índice).

cutucar
fonte
as duas opções são equivalentes (se redefinirmos para HEAD)?
Lucidbrot #
10
Não, existem certas diferenças. Por exemplo git checkout -- ., redefinirá apenas as alterações para o estado do índice. Portanto, se você já adicionou arquivos ao índice, é para isso que ele será redefinido. Por outro lado git reset --hard, também jogará fora o índice. Por exemplo, se você tiver arquivos não rastreados adicionados ao índice (para começar a rastreá-los), eles também serão removidos. git checkouttambém permite restaurar apenas o diretório de trabalho parcialmente, passando um caminho mais específico que pode ser muito útil.
poke
4
Oi puxão, eu tenho certeza git checkout -. não funciona Eu tentei isso para várias alterações sem estágio.
Aman
2
outros comandos para alcançar o mesmo resultado: git checkout --force,git reset --hard
Tjalling
3

Outra maneira que eu achei útil é:

git checkout <wildcard> 

Exemplo:

git checkout *.html

De forma geral:

git checkout <branch> <filename/wildcard>
Singhak
fonte
1
Se o globbing estiver ativado no seu shell e houver arquivos não rastreados no diretório de trabalho, isso falhará, a menos que você escape do asterisco, por exemplo, git checkout \*ou git checkout '*'.
Josh Cooley