Opções e uso comuns

Levando em consideração a explicação anterior dos comportamentos do git clean e das advertências relacionadas a ele, o conteúdo a seguir apresenta diversos casos de uso do git clean e as opções de linha de comando associadas e necessárias para a execução.

-n

A opção -n vai executar o processo de “dry run” do git clean. Isso vai exibir os arquivos a serem excluídos sem de fato os excluir. É recomendável sempre executar o dry run do git clean primeiro. É possível visualizar essa opção no repositório de demonstração criado antes.

 $ git clean -n Excluiria untracked_file

O resultado mostra que o untracked_file vai ser excluído quando o comando git clean for executado. Veja que o untracked_dir não foi relatado nos resultados aqui. Por padrão, o funcionamento do git clean não é recorrente em diretórios. Esse é outro mecanismo de segurança para evitar uma exclusão acidental e permanente.

 -f ou --force

A opção force dá início de fato à exclusão de arquivos não monitorados do diretório atual. Ela é necessária a menos que a opção de configuração clean.requireForce esteja marcada como falsa. Ela não vai remover pastas ou arquivos não monitorados especificados pelo .gitignore. A gente vai agora executar o git clean ao vivo no repositório para exemplificação.

 $ git clean -f Remoção de untracked_file

O comando vai mostrar os arquivos que são excluídos. Aqui, é possível ver que o untracked_file foi excluído. Executar o git status nesse ponto ou realizar ls vai mostrar que o untracked_file foi excluído e não pode ser encontrado. Por padrão, o git clean -f vai funcionar em todos os arquivos não monitorados do diretório atual. Ainda, um valor pode ser transmitido com a opção -f, que vai remover um arquivo específico.

 git clean -f  -d incluir diretórios

A opção -d informa ao git clean que você também quer excluir quaisquer diretórios não monitorados; por padrão, ele vai ignorar os diretórios. É possível adicionar a opção -d aos exemplos anteriores:

 $ git clean -dn Excluiria untracked_dir/ $ git clean -df Remoção de untracked_dir/

Aqui, o "dry run" foi executado com a combinação -dn, que mostra que o untracked_dir pode ser excluído. Depois, a gente executa uma limpeza forçada, e é possível ver que o untracked_dir foi excluído.

 Remoção -x force de arquivos ignorados

Uma tendência em versões de software é a existência de um diretório de build ou distribuição que não é submetido ao índice de monitoramento dos repositórios. O diretório de build vai abranger artefatos de build efêmeros gerados do código-fonte objeto de commit. Esse diretório de build é adicionado com frequência ao arquivo .gitignore dos repositórios. Também pode ser conveniente limpar esse diretório com outros arquivos não monitorados. A opção -x diz ao git clean para incluir também quaisquer arquivos ignorados. Assim como em invocações anteriores do git clean, é recomendável executar "dry run" primeiro, antes da exclusão final. A opção -x vai atuar em todos os arquivos ignorados, não apenas nos específicos de build de projeto. Esse procedimento pode ter efeito em algum elemento indesejado, como arquivos de configuração de IDE ./.idea.

 git clean -xf 

Assim como a opção -d, a -x pode ser transmitida e elaborada com outras opções. Esse exemplo demonstra uma combinação com a opção -f, que vai remover arquivos não monitorados do diretório atual assim como quaisquer arquivos que o Git ignora com frequência.

Modo interativo ou git clean interativo

Além da execução ad hoc das linhas de comando demonstradas até agora, o git clean tem um modo "interativo" que pode ser inicializado pela transmissão da opção -i. A gente vai revisitar o repositório para exemplificação da introdução deste documento. Naquele modo inicial, vamos realizar uma sessão interativa de limpeza.

 $ git clean -di Excluiria os seguintes elementos: untracked_dir/ untracked_file *** Comandos *** 1: limpar 2: filtrar por padrão 3: selecionar por números 4: perguntar para cada 5: sair 6: ajuda What now>

Iniciamos a sessão interativa com a opção -d para que ela também atue na untracked_dir. O modo interativo vai exibir o prompt What now> ("o que fazer agora"), que pede um comando a ser utilizado com arquivos não monitorados. Os comandos em si são bastante autoexplicativos. A gente vai fazer uma análise objetiva de cada um em ordem aleatória, começando pelo comando 6: ajuda. A seleção do comando 6 vai explicar melhor os outros:

 What now> 6 limpar - começar limpeza filtrar por padrão - excluir elementos da limpeza selecionar por números - selecionar elementos a serem excluídos por números perguntar para cada - confirmar cada exclusão (como "rm -i") sair - interromper limpeza ajuda - esta tela ? - ajuda para seleção de prompt
 5: sair

Bem intuitivo: vai fechar a sessão interativa.

 1: limpar

Vai excluir os elementos indicados. Se o comando 1: limpar fosse executado nesse ponto, untracked_dir/ untracked_file seriam excluídos.

 4: perguntar para cada

vai repetir para cada arquivo não monitorado e exibir um prompt S/N para uma exclusão. Seria assim:

 *** Comandos *** 1: limpar 2: filtrar por padrão 3: selecionar por números 4: perguntar para cada 5: sair 6: ajuda What now> 4 Remover untracked_dir/ [s/N]? N Remover untracked_file [s/N]? N
 2: filtrar por padrão

Vai exibir um prompt adicional que considera a entrada usada para filtrar a lista de arquivos não monitorados.

 Excluiria os seguintes elementos: untracked_dir/ untracked_file *** Comandos *** 1: limpar 2: filtrar por padrão 3: selecionar por números 4: perguntar para cada 5: sair 6: ajuda What now> 2 untracked_dir/ untracked_file Entrada ignorar padrões>> *_file untracked_dir/

Aqui, inserimos o padrão de asterisco *_file, que então restringe a lista de arquivos não monitorados a apenas untracked_dir.

 3: selecionar por números

Parecido com o comando 2, o 3 serve para refinar a lista de nomes de arquivos não monitorados. A seção interativa vai pedir por números que correspondam ao nome de um arquivo não monitorado.

 Excluiria os seguintes elementos: untracked_dir/ untracked_file *** Comandos *** 1: limpar 2: filtrar por padrão 3: selecionar por números 4: perguntar para cada 5: sair 6: ajuda What now> 3 1: untracked_dir/ 2: untracked_file Selecionar elementos a serem excluídos>> 2 1: untracked_dir/ * 2: untracked_file Selecionar elementos a serem excluídos>> Excluiria o seguinte elemento: untracked_file *** Comandos *** 1: limpar 2: filtrar por padrão 3: selecionar por números 4: perguntar para cada 5: sair 6: ajuda