Git Clean: Remova Arquivos Não Rastreados e Mantenha os Repositórios Organizados

Ao trabalhar em um repositório Git, é comum acumular arquivos e diretórios não rastreados que não fazem parte do sistema de controle de versão do repositório. Estes podem incluir arquivos temporários, artefatos de compilação ou outros arquivos criados localmente que não foram commitados. Com o tempo, esses arquivos podem poluir o diretório de trabalho, tornando mais difícil manter um ambiente de trabalho limpo e organizado.

Para resolver esse problema, o Git fornece o comando git clean, que remove arquivos e diretórios não rastreados. Neste guia, vou te mostrar como usar com segurança o git clean, suas diferentes opções e as melhores práticas para evitar exclusão não intencional de arquivos enquanto mantém seu repositório Git organizado. Para aprender mais, recomendo fazer nossos cursos Foundations of Git e Introduction to GitHub Concepts para entender sobre controle de versão e a diferença entre Git e GitHub.

Compreendendo o git clean

O comando git clean é uma ferramenta útil no Git que remove arquivos não rastreados do diretório de trabalho. O comando git clean é útil quando você precisa redefinir seu diretório de trabalho para um estado prístino, como antes de trocar de branch ou após executar processos de build que geram arquivos temporários. No entanto, o comando git clean deve ser usado com cautela, pois ele deleta permanentemente arquivos e diretórios não rastreados sem movê-los para a lixeira ou pasta de reciclagem.

Ao contrário de git reset ou git checkout, que modificam arquivos rastreados, git clean lida estritamente com arquivos e diretórios que não estão sob controle de versão. Isso inclui:

  • Arquivos temporários criados por builds

  • Arquivos de log ou dados em cache

  • Arquivos listados no .gitignore (se explicitamente especificados com -x)

O comando git clean é útil para manter um diretório de trabalho organizado, complementando outros comandos do Git como git reset e git checkout, que gerenciam alterações em arquivos rastreados.

Eu acho o Guia de Referência Completo do Git um guia prático para comandos comuns do Git.

Usos Comuns para git clean

O comando git clean é uma ferramenta útil para manter um diretório de trabalho limpo. Abaixo estão alguns casos de uso comuns onde o git clean pode remover com segurança arquivos e diretórios desnecessários.

Removendo arquivos não rastreados

Ao trabalhar em um repositório Git, arquivos não rastreados podem se acumular ao longo do tempo. As opções a seguir ajudam a removê-los:

  • git clean -f: Força a remoção de arquivos não rastreados.

  • git clean -fd: Remove arquivos não rastreados e diretórios não rastreados.

  • git clean -fx: Remove arquivos não rastreados e ignorados, como os listados no .gitignore.

No entanto, você deve ter cuidado ao usar a opção -fx pois ela também remove arquivos ignorados. Sempre verifique usando um teste de simulação (git clean -n) antes de executar o comando.

Modo interativo

O comando git clean -i permite um modo interativo, permitindo aos usuários remover seletivamente arquivos não rastreados. Esse modo é útil quando você deseja ter mais controle sobre quais arquivos ou diretórios serão deletados.

Suponha que você esteja trabalhando em um projeto onde já salvou as alterações na pasta Olympics. No entanto, você adicionou novas fontes de dados chamadas 2024_Data e 2025_Data. Se você executar o comando git clean -i, você receberá um prompt permitindo que escolha entre as seguintes opções para deletar as alterações não rastreadas.

  • clean:  Remover arquivos selecionados

  • filter: Especificar um padrão para arquivos a serem limpos

  • select: Escolher arquivos individuais por número

  • quit: Sair sem excluir nada

git clean -i modo interativo. Imagem por Autor.

Execução a seco para segurança

O uso da opção git clean -n é uma medida de segurança útil, pois realiza uma “execução a seco”, exibindo uma lista de arquivos e diretórios não rastreados que seriam removidos sem realmente deletá-los. Isso permite que você revise as alterações antes de executá-las.

No exemplo abaixo, o comando git clean -n lista os arquivos que devem ser deletados, mas não os deleta.

git clean -n para execução a seco. Imagem por Autor.

Combinando com reset do git

Para redefinir completamente um diretório de trabalho do Git, você pode combinar git reset e git clean onde:

  • git reset --hard: Redefine os arquivos rastreados para o estado do último commit, descartando quaisquer alterações locais.

  • git clean -fd: Remove arquivos e diretórios não rastreados, deixando apenas arquivos commitados.

Essa combinação garante um diretório de trabalho completamente limpo, tornando-o útil ao mudar de branch, desfazer alterações experimentais ou se preparar para um novo começo.

Confira o Git Pull Force: Como Sobrescrever uma Branch Local com a Remota tutorial para aprender as melhores práticas para sobrescrever alterações locais.

Guia Passo a Passo para Usar git clean

Siga estes passos para limpar seu repositório Git de forma segura e remover arquivos e diretórios não rastreados indesejados.

Passo 1: Verifique o estado atual

Antes de limpar, execute git status para verificar o estado atual do seu repositório e ver quais arquivos não estão sendo rastreados.

git status

git status para verificar o estado atual do repositório. Imagem do Autor.

Passo 2: Visualize o que será removido

Antes de executar qualquer comando de remoção, use git clean -n para visualizar o que será removido.

git clean -n

git clean -n para visualizar o que será deletado. Imagem do Autor.

Passo 3: Remova arquivos não rastreados

Execute git clean -f para remover arquivos não rastreados se a visualização parecer correta.

git clean -f

Remova alterações não rastreadas usando git clean -f. Imagem do Autor.

Passo 4: Remova diretórios não rastreados

Use git clean -fd para remover diretórios não rastreados.

git clean -fd

Remova diretórios não rastreados usando git clean -fd. Imagem do Autor.

Passo 5: Remova arquivos ignorados

Para remover tanto arquivos não rastreados quanto ignorados, use o comando git clean -fx.

git clean -fx

Passo 6: Use o modo interativo para limpeza seletiva

Para mais controle, considere usar git clean -i para remoção interativa. Este modo permite selecionar quais arquivos excluir individualmente.

Git clean -i

git clean -i modo interativo para limpeza seletiva. Imagem do Autor.

git clean vs. Outros Comandos Git

O comando git clean é frequentemente comparado com outros comandos Git que modificam ou redefinem arquivos. A tabela abaixo destaca as principais diferenças:

Command Function
git clean Remove arquivos e diretórios não rastreados permanentemente.
git reset Redefine arquivos rastreados para um estado anterior, afetando alterações em staging e commits.
git checkout (ou git restore) Descarta alterações em arquivos rastreados, mas não os remove.
git stash Salva alterações rastreadas e não rastreadas temporariamente para uso posterior.

Melhores Práticas do Git Clean

Para usar o git clean com segurança e eficácia, siga estas melhores práticas:

  • Use Dry Runs (-n) Antes da Exclusão: Sempre utilize a opção git clean -n para realizar um teste antes de executar o git clean. Isso permite visualizar quais arquivos serão removidos sem realmente excluí-los.

  • Fique atento aos arquivos ignorados:Ao usar o git clean, tenha cuidado com a opção -x, que remove arquivos ignorados. Isso pode potencialmente excluir arquivos de configuração importantes listados no .gitignore. Se precisar remover arquivos ignorados, use o comando git clean -fx.

  • Combinar com Git Reset para Limpeza Completa: Para redefinir completamente seu repositório, combine git reset com git clean, onde git reset --hard restaura os arquivos rastreados para seu último estado commitado e git clean -fd remove arquivos e diretórios não rastreados.

  • Use o Modo Interativo (-i) para Deletar com Segurança: Em vez de remover arquivos cegamente, use o modo interativo (git clean -i) para revisar e selecionar os arquivos a serem excluídos.

Riscos Potenciais e Precauções

O uso do git clean pode ser arriscado se não for feito com cuidado, pois exclui permanentemente arquivos sem armazená-los em nenhum lugar. Aqui estão alguns riscos e precauções importantes a serem considerados:

  • Arquivos São Excluídos Permanentemente: Ao contrário do git stash, que salva temporariamente as alterações, o git clean exclui permanentemente arquivos e diretórios não rastreados. Uma vez removidos, esses arquivos não podem ser recuperados através do Git. Se você pode precisar dos arquivos mais tarde, considere armazená-los ou fazer backup antes de executar o comando git clean.

  • Tenha Cuidado com a Opção -x: Usar git clean-fx remove arquivos ignorados, que podem incluir arquivos de configuração importantes listados em .gitignore ou caches de dependências como node_modules/ e venv/. Remover acidentalmente esses arquivos pode quebrar builds ou ambientes de desenvolvimento, portanto, use esta opção apenas quando necessário.

  • Execute Primeiro um Teste Seco: Sempre execute um teste seco usando git clean -n antes de executar git clean -f. Esse passo permite visualizar quais arquivos serão excluídos, ajudando a evitar a remoção acidental de arquivos importantes

  • Abordagens Alternativas: Em alguns cenários, usar git stash pode ser uma opção melhor do que git clean. O comando git stash -u guarda arquivos não rastreados, excluindo arquivos ignorados para possível recuperação posterior, e o git stash pop restaura as alterações guardadas, se necessário. Esse método é útil quando é necessário mudar de ramo ou limpar seu espaço de trabalho sem perder permanentemente as alterações.

Conclusão

Uma base de código bem mantida demonstra atenção aos detalhes, eficiência e a capacidade de gerenciar ativos digitais de forma responsável. Os empregadores procuram desenvolvedores que entendem as melhores práticas, como usar git clean -n antes de excluir arquivos, ter cautela com arquivos ignorados usando -x e utilizar alternativas mais seguras, como git stash.

Fazer cursos no DataCamp não é apenas uma ótima maneira de aprender, mas também uma excelente forma de sinalizar aos empregadores que você leva o desenvolvimento de software a sério. Nesse sentido, recomendo estudar o blog As 20 Principais Perguntas e Respostas sobre Git para Todos os Níveis e fazer nosso novo curso de Fundamentos do Git para se tornar um especialista em tudo relacionado ao Git.

Source:
https://www.datacamp.com/tutorial/git-clean