Tenho as seguintes entradas em um .gitignorearquivo e desejo removê-las. A razão é porque esses arquivos são arquivos indesejados temporários criados durante uma compilação do TeX e eu quero removê-los.
Com letras maiúsculas -X, remove git cleanapenas os arquivos correspondentes .gitignore.
Com -d, git cleantambém exclui diretórios inteiros correspondentes .gitignore.
Com -f, git cleanirá realmente deletar coisas em vez de avisá-lo. Tenha cuidado embora. Pode haver outras coisas (como direnvconfiguração pessoal) que são .gitignoredpor outros motivos, portanto, certifique-se de entender o que esse comando fará antes de ser executado.
Um agradecimento especial a @Kusalananda por compartilhar git clean.
Como alternativa, se você tiver, digamos, uma pasta para dependências que inclua diretórios com links simbólicos e não queira git cleanexcluir recursivamente tudo dentro desses diretórios, poderá usar este formulário mais longo:
git ls-filescom essas opções lista os mesmos diretórios que git clean -Xdn, mas mais legível por máquina.
head -c -1corta o byte de nova linha à direita.
tr '\n' '\0'traduz todas as novas linhas para NULs.
xargs -0 -r rm -rexclui os arquivos e diretórios. -0faz NULo delimitador. -rfaz com que ele pule a entrada vazia (aviso: esta é uma extensão GNU não portátil).
git clean -Xremoverá todos os arquivos correspondentes aos padrões em .gitignore. O -nno final faz com que ele não remova os arquivos, apenas para executar a seco, relatando arquivos que teriam sido removidos.
Adicione -dpara remover também diretórios ignorados.
Sem -X, ele remove arquivos não rastreados (mas não arquivos ignorados).
Com letras maiúsculas
-X
, removegit clean
apenas os arquivos correspondentes.gitignore
.Com
-d
,git clean
também exclui diretórios inteiros correspondentes.gitignore
.Com
-f
,git clean
irá realmente deletar coisas em vez de avisá-lo. Tenha cuidado embora. Pode haver outras coisas (comodirenv
configuração pessoal) que são.gitignored
por outros motivos, portanto, certifique-se de entender o que esse comando fará antes de ser executado.Um agradecimento especial a @Kusalananda por compartilhar
git clean
.Como alternativa, se você tiver, digamos, uma pasta para dependências que inclua diretórios com links simbólicos e não queira
git clean
excluir recursivamente tudo dentro desses diretórios, poderá usar este formulário mais longo:git ls-files
com essas opções lista os mesmos diretórios quegit clean -Xdn
, mas mais legível por máquina.head -c -1
corta o byte de nova linha à direita.tr '\n' '\0'
traduz todas as novas linhas paraNUL
s.xargs -0 -r rm -r
exclui os arquivos e diretórios.-0
fazNUL
o delimitador.-r
faz com que ele pule a entrada vazia (aviso: esta é uma extensão GNU não portátil).git clean -X
removerá todos os arquivos correspondentes aos padrões em.gitignore
. O-n
no final faz com que ele não remova os arquivos, apenas para executar a seco, relatando arquivos que teriam sido removidos.Adicione
-d
para remover também diretórios ignorados.Sem
-X
, ele remove arquivos não rastreados (mas não arquivos ignorados).Veja
git clean --help
.No seu caso, se as entradas dos arquivos
.gitignore
não estiverem começando!
, então este one-liner deve ser bom para você: