Atualização de 2019:
Desde julho 2019 , houve um novo comando que faz exatamente isso: git restore
.
Em git status
, agora Git recomenda usar este comando em vez de git checkout
como ele costumava fazer.
Embora esse comando também possa ser usado para restaurar a árvore de trabalho para uma confirmação específica ou para restaurar o conteúdo do índice, por padrão, a árvore de trabalho é restaurada para o estado no índice (o que é solicitado aqui).
Portanto, para restaurar os arquivos que correspondem a um pathspec (se livrando de suas alterações não estágios), você deve:
git restore <pathspec>
Por exemplo, para restaurar todas as alterações não faseadas no diretório atual, você pode executar:
git restore .
Se você executar isso a partir da raiz do projeto, ele restaurará todas as alterações não-estágios em todo o repositório.
Observe que, como em git checkout -- .
(como indicado por Mariusz Nowak), isso descartará apenas as alterações nos arquivos rastreados pelo Git e não descartará nenhum novo arquivo não rastreado. Se você deseja descartar as alterações não faseadas, incluindo novos arquivos não rastreados, poderá executar um adicional:
git clean -df
No entanto, tenha muito cuidado com este comando posterior, pois você pode descartar arquivos dos quais não pretendia se livrar.
Nota sobre git restore
: como este é um novo comando, sua página de manual emite um aviso:
Este comando é experimental. O comportamento pode mudar.
Portanto, é possível que essa resposta fique desatualizada se o comportamento mudar no futuro. Portanto, pode ser aconselhável executar um rápido man git-restore
antes de usá-lo.
git-clean
só remove arquivos untracked da árvore de trabalho git-scm.com/docs/git-clean