Git: Como excluir todos os arquivos não rastreados?


40

Estou usando o Git para controle de versão. Agora eu quero excluir na minha máquina local todos os arquivos no repositório que não são rastreados.

Eu posso usar

git status

para listar esses arquivos, mas como posso excluir todos eles?


1
Você não pode simplesmente verificar todos os arquivos em um local diferente da sua máquina e excluir a versão antiga?
Nifle 14/09/11

1
Com certeza eu posso, mas não existe uma maneira mais simples?
RoflcoptrException

Respostas:


55

Se você o ignorar, use git clean -xf. Você pode fazer git clean -dfisso, mas isso também removerá diretórios não rastreados. Use -npara uma corrida a seco.

Veja a limpeza não rastreada


3
-x ignora os ignora ..
UpAndAdam

8
-xfirá excluir e os arquivos ignorados e provavelmente não é isso que você deseja. Use -nfe continue com cuidado. Veja: stackoverflow.com/questions/61212/…
Mr_and_Mrs_D

2
Lembre-se, este pode remover as pastas de ambiente / IDE (por exemplo .vagrant ou .idea (phpstorm))
timhc22

1
CUIDADO! arquivos gitignored serão limpos para sempre. -100
sepehr

5
git clean -f

8
Pode fazer sentido adicionar o significado desse comando para tornar essa resposta independente.
NN

5

Abordagem interativa do usuário:

git clean -i -fd

Remove .classpath [y/N]? N
Remove .gitignore [y/N]? N
Remove .project [y/N]? N
Remove .settings/ [y/N]? N
Remove src/com/amazon/arsdumpgenerator/inspector/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove src/com/amazon/arsdumpgenerator/s3/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/manifest/ [y/N]? y
Remove tst/com/amazon/arsdumpgenerator/s3/ [y/N]? y

-i para interativo
-f para o arquivo
-d para o diretório

Nota: Adicione -n ou --dry-run para verificar apenas o que ele fará.


3

Há uma sutileza que vale a pena mencionar sobre git clean -farquivos e diretórios não rastreados. Se você tiver um diretório não rastreado que contenha arquivos que, a fortiori, não sejam rastreados, git clean -fNÃO excluirá esses arquivos não rastreados.

Em outras palavras, nem sempre é o caso que git clean -fexcluirá todos os arquivos não rastreados. Uma explicação melhor git clean -fé que ele exclui todos os arquivos não rastreados que não estão em diretórios não rastreados.

git clean -f -d deve ser usado para excluir arquivos não rastreados que estão em diretórios não rastreados e parece não haver maneira de excluir todos os arquivos não rastreados sem também excluir diretórios não rastreados que contêm apenas arquivos não rastreados.

Use git clean -f -d -npara REALMENTE ver o que você deseja fazer para restaurar seu diretório de trabalho para o que seria sem arquivos não rastreados. Então use git clean -f -dpara fazer isso.

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.