git: Apagar todos os arquivos rastreados?

6

Eu tenho um diretório contendo um repositório git, bem como outros arquivos não relacionados que eu não quero rastreados (é meu diretório home, desculpe se isso é uma má prática - recomendações alternativas para o perfil bash e arquivos vim são bem-vindos!)

Eu posso facilmente remover o diretório .git, mas isso me deixa com todos os arquivos rastreados em meu diretório. Como excluo todos os arquivos rastreados para que eu possa remover completamente o repositório do git e seus arquivos relevantes, efetivamente "desclassificando" ou "desinstalando"?

Além disso, depois de remover esses arquivos, como removo os diretórios que costumavam conter os arquivos rastreados, mas agora estão vazios?

Relacionado (pergunta oposta): Git: Como excluir todos os arquivos não rastreados

    
por Ilias Karim 28.06.2012 / 15:45

2 respostas

10

Para arquivos, você pode querer mudar um pouco sua linha de comando para a linha de comando sugerida na página git-rm

git ls-files -z | xargs -0 rm -f

Isso é muito mais seguro com caminhos de arquivo mais complexos. Para diretórios, você pode tentar uma estratégia semelhante:

git ls-tree --name-only -d -r -z HEAD | sort -rz | xargs -0 rmdir 

No entanto, depende de como você gostaria de tratar os diretórios que contêm arquivos (geralmente gitignored) que não são controlados. A linha de comando acima deve deixar esses arquivos e seus diretórios.

Mas seria fácil mudar isso para excluir o diretório, seja qual for o conteúdo.

    
por 17.07.2012 / 20:11
1

Você pode pedir ao git uma lista de todos os arquivos rastreados com git ls-files . Então, o seguinte comando deve funcionar bem

git ls-files | xargs rm
    
por 28.06.2012 / 16:02