Como remover arquivos locais (não rastreados) da tree de trabalho atual do Git?

Como você exclui arquivos locais não rastreados de sua tree de trabalho atual?

De acordo com a documentação do Git git clean

Remover arquivos não rastreados da tree de trabalho


O passo 1 é mostrar o que será excluído usando a opção -n :

 git clean -n 

Clean Step – cuidado: isso excluirá arquivos :

 git clean -f 
  • Para remover diretórios, execute git clean -f -d ou git clean -fd
  • Para remover arquivos ignorados, execute git clean -f -X ou git clean -fX
  • Para remover arquivos ignorados e não ignorados, execute git clean -f -x ou git clean -fx

Observe a diferença de caso no X para os dois últimos comandos.

Se clean.requireForce estiver definido como “true” (o padrão) em sua configuração, é necessário especificar -f caso contrário, nada acontecerá.

Novamente, consulte os documentos git-clean para mais informações.

Opções

-f

–força

Se a variável de configuração do Git, clean.requireForce, não estiver definida como false, o git clean recusará a execução, a menos que seja dado -f, -n ou -i.

-x

Não use as regras padrão de ignorar lidas de .gitignore (por diretório) e $ GIT_DIR / info / exclude, mas ainda use as regras de ignorar fornecidas com as opções -e. Isso permite remover todos os arquivos não acompanhados, incluindo produtos de criação. Isso pode ser usado (possivelmente em conjunto com o git reset) para criar um diretório de trabalho primitivo para testar uma compilation limpa.

-X

Remova apenas arquivos ignorados pelo Git. Isso pode ser útil para reconstruir tudo do zero, mas manter arquivos criados manualmente.

-n

–funcionamento a seco

Na verdade, não remova nada, apenas mostre o que seria feito.

-d

Remova os diretórios não acompanhados, além dos arquivos não acompanhados. Se um diretório não rastreado for gerenciado por um repository Git diferente, ele não será removido por padrão. Use a opção -f duas vezes se você realmente quiser remover esse diretório.

Use git clean -f -d para certificar-se de que os diretórios também sejam removidos.

Você pode então verificar se seus arquivos estão realmente com git status .

Estou surpreso que ninguém tenha mencionado isso antes:

 git clean -i 

Isso significa interativo e você terá uma visão geral rápida do que será excluído, oferecendo a possibilidade de include / excluir os arquivos afetados. No geral, ainda mais rápido do que executar o obrigatório --dry-run antes da limpeza real.

Você terá que lançar um -d se você também quiser cuidar de pastas vazias. No final, é um bom apelido:

 git iclean 

Dito isto, o uso extra de comandos interativos pode ser cansativo para usuários experientes. Hoje em dia eu uso apenas o já mencionado git clean -fd

git-clean – Remove arquivos não rastreados da tree de trabalho

Se o diretório untracked é um repository git próprio (por exemplo, submódulo), você precisa usar -f duas vezes:

git clean -d -f -f

Maneira simples de remover arquivos não rastreados

Para remover todos os arquivos não rastreados, a maneira simples é adicionar todos eles primeiro e redefinir o repo como abaixo

 git add --all git reset --hard HEAD 

Eu gosto de git stash save -u porque você pode desfazer todos eles com git stash pop .

EDIT: Também eu encontrei uma maneira de mostrar o arquivo untracked em um stash (por exemplo, git show stash@{0}^3 ) https://stackoverflow.com/a/12681856/338986

Isso é o que eu sempre uso:

 git clean -fdx 

Para um projeto muito grande, você pode querer executá-lo algumas vezes.

git-clean é o que você está procurando. Ele é usado para remover arquivos não rastreados da tree de trabalho.

Se necessário para remover arquivos não rastreados de um subdiretório específico,

 git clean -f {dir_path} 

E forma combinada para excluir dir / untracked arquivos / arquivos ignorados.

 git clean -fxd {dir_path} 

depois disso você terá arquivos modificados apenas no git status .

git clean -fd remove o diretório

git clean -fX remove arquivos ignorados

git clean -fx remove git clean -fx ignorados e não ignorados

pode ser usado todas as opções acima em combinação como

git clean -fdXx

verifique o manual do git para mais ajuda

OK, excluir arquivos e pastas não acompanhados e indesejados é fácil usando git na linha de comando, apenas faça assim:

 git clean -fd 

Verifique novamente antes de fazer isso, pois ele excluirá os arquivos e pastas sem fazer nenhum histórico …

Também neste caso, -f significa força e -d significa diretório …

Então, se você deseja excluir apenas arquivos, você pode usar -f apenas:

 git clean -f 

Se você quiser excluir (diretórios) e arquivos, você pode excluir apenas diretórios e arquivos não acompanhados como este:

 git clean -fd 

Além disso, você pode usar o sinalizador -x para include os arquivos que são ignorados pelo git. Isso seria útil se você quiser excluir tudo.

E adicionando o sinalizador -i , faz com que o git solicite permissão para excluir arquivos, um a um, em movimento.

Se não tiver certeza e quiser verificar as coisas primeiro, adicione -n sinalizador.

Use -q se não quiser ver nenhum relatório após a exclusão bem-sucedida.

Eu também crio a imagem abaixo para torná-la mais memorizável, especialmente eu tenho visto muitas pessoas confundirem -f para limpar pasta algumas vezes ou misturar de alguma forma!

excluindo arquivos e pastas não acompanhados indesejados

A melhor maneira é usar: git clean

 git clean -d -x -f 

Isso remove arquivos não acompanhados, incluindo diretórios (-d) e arquivos ignorados pelo git (-x) .

Além disso, substitua o argumento -f por -n para executar uma execução a dry-run ou -i para o modo interativo e ele informará o que será removido.

Remova todas as pastas e arquivos extras neste repository + submódulos

Isso faz com que você fique no mesmo estado de clone fresco.

 git clean -ffdx 

Remova todas as pastas e arquivos extras neste repository, mas não seus submódulos

 git clean -fdx 

Remover apenas pastas extras, mas não arquivos (ex. Pasta de compilation)

 git clean -fd 

Remover pastas extras + arquivos ignorados (mas não quaisquer arquivos adicionados recentemente)

Se o arquivo não foi ignorado e ainda não foi feito o check-in, ele permanece. Observe a capital X.

 git clean -fdX 

Novo modo interativo

 git clean 

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/arsdumpgenerator/inspector/ [y/N]? y Remove src/com/arsdumpgenerator/manifest/ [y/N]? y Remove src/com/arsdumpgenerator/s3/ [y/N]? y Remove tst/com/arsdumpgenerator/manifest/ [y/N]? y Remove tst/com/arsdumpgenerator/s3/ [y/N]? y 

-i para interativo
-f para forçar
-d para o diretório
-x para arquivos ignorados (adicionar, se necessário)

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

git clean -f -d -x $(git rev-parse --show-cdup) aplica clean no diretório raiz, não importa onde você o chame dentro de uma tree de diretórios do repository. Eu uso isso o tempo todo, pois não obriga você a deixar a pasta onde você está trabalhando agora e permite limpar e confirmar desde o lugar onde você está.

Certifique-se de que os flags -f , -d , -x correspondam às suas necessidades:

 -d Remove untracked directories in addition to untracked files. If an untracked directory is managed by a different Git repository, it is not removed by default. Use -f option twice if you really want to remove such a directory. -f, --force If the Git configuration variable clean.requireForce is not set to false, git clean will refuse to delete files or directories unless given -f, -n or -i. Git will refuse to delete directories with .git sub directory or file unless a second -f is given. This affects also git submodules where the storage area of the removed submodule under .git/modules/ is not removed until -f is given twice. -x Don't use the standard ignore rules read from .gitignore (per directory) and $GIT_DIR/info/exclude, but do still use the ignore rules given with -e options. This allows removing all untracked files, including build products. This can be used (possibly in conjunction with git reset) to create a pristine working directory to test a clean build. 

Existem outros flags disponíveis, apenas verifique git clean --help .

Para mim só seguindo funcionou:

 git clean -ffdx 

Em todos os outros casos, eu estava recebendo a mensagem “Ignorando Diretório” para alguns subdiretórios.

Um lifehack para tal situação eu apenas inventei e tentei (isso funciona perfeitamente):

 git add . git reset --hard HEAD 

Cuidado! Certifique-se de confirmar todas as alterações necessárias (mesmo em arquivos não não-rastreados) antes de fazer isso .

Se você quiser apenas excluir os arquivos listados como não acompanhados por “git status”

 git stash save -u git stash drop "stash@{0}" 

Eu prefiro que isto ‘git clean’ porque ‘git clean’ irá deletar arquivos ignorados pelo git, então sua próxima build terá que reconstruir tudo e você pode perder suas configurações do IDE também.

Para saber o que será excluído antes de excluir:

git clean -d -n

Isso irá produzir algo como:

Removeria o exemplo.txt

Para excluir tudo listado na saída do comando anterior:

git clean -d -f

Isso irá produzir algo como:

Removendo o exemplo.txt

Para remover os arquivos não rastreados, você deve primeiro usar o comando para visualizar os arquivos que serão afetados pela limpeza

 git clean -fdn 

Isso mostrará a lista de arquivos que serão excluídos. Agora, para realmente excluir esses arquivos, use este comando:

 git clean -fd 

O comando normal git clean não remove arquivos não rastreados com minha git version 2.9.0.windows.1 .

 $ git clean -fdx # doesn't remove untracked files $ git clean -fdx * # Append star then it works! 

git clean -f to remove untracked files from working directory.

Eu cobri algumas noções básicas aqui no meu blog, git intro-basic-comandos

Comando uggested para remover arquivos não rastreados de git docs is git clean

git clean – Remove arquivos não rastreados da tree de trabalho

Método sugerido: Modo Interativo usando git clean -i para que possamos ter controle sobre ele. deixe ver as restantes opções disponíveis.

Opções disponíveis:

 git clean -d -f -i -n -q -e -x -X (can use either) 

Explicação:

1. -d

Remova os diretórios não acompanhados, além dos arquivos não acompanhados. Se um diretório não rastreado for gerenciado por um repository Git diferente, ele não será removido por padrão. Use a opção -f duas vezes se você realmente quiser remover esse diretório.

2. -f, –force

Se a variável de configuração do Git, clean.requireForce, não estiver definida como false, o git clean recusará a execução, a menos que seja dado -f, -n ou -i.

3. -i, –interativo

Mostre o que seria feito e limpe os arquivos interativamente. Veja “Modo interativo” para detalhes.

4. -n, –dry-run

Na verdade, não remova nada, apenas mostre o que seria feito.

5. -q, –quiet

Fique quieto, relate somente erros, mas não os arquivos removidos com sucesso.

6. -e, –exclude =

Além dos encontrados em .gitignore (por diretório) e $ GIT_DIR / info / exclude, considere também que esses padrões estejam no conjunto das regras de ignorar em vigor.

7. -x

Não use as regras padrão de ignorar lidas de .gitignore (por diretório) e $ GIT_DIR / info / exclude, mas ainda use as regras de ignorar fornecidas com as opções -e. Isso permite remover todos os arquivos não acompanhados, incluindo produtos de criação. Isso pode ser usado (possivelmente em conjunto com o git reset) para criar um diretório de trabalho primitivo para testar uma compilation limpa.

8. -X

Remova apenas arquivos ignorados pelo Git. Isso pode ser útil para reconstruir tudo do zero, mas manter arquivos criados manualmente.

Podemos facilmente remover arquivos locais não rastreados da tree de trabalho atual do git usando comentários abaixo do git.

 git reset [--soft | --mixed [-N] | --hard | --merge | --keep] [-q] [] 

Exemplo:

 git reset --hard HEAD 

Links:

  1. https://git-scm.com/docs/git-reset
  2. Como eu uso ‘git reset –hard HEAD’ para reverter para um commit anterior?
  3. Repor a ramificação do repository local para ser como o repository remoto HEAD
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html

Tenha cuidado ao executar o comando `git clean`.

Sempre use -n antes de executar o comando real, pois ele mostrará quais arquivos seriam removidos.

 git clean -n -d git clean -f -d 

Por padrão, o git clean só remove arquivos não rastreados que não são ignorados. Qualquer arquivo que corresponda a um padrão no seu .gitignore ou outro arquivo ignorado não será removido. Se você quiser remover esses arquivos também, você pode adicionar um -x ao comando clean.

 git clean -f -d -x 

Há também o modo interativo disponível -i com o comando clean

 git clean -x -i 

alternativamente

Se você não tem 100% de certeza de que a exclusão do seu trabalho não confirmado é segura, você pode usar stashing

 git stash --all 

Ele também limpará seu diretório, mas lhe dará flexibilidade para recuperar os arquivos a qualquer momento, usando stash com apply ou pop . Então, em um ponto posterior, você poderá limpar seu estoque usando:

 git stash drop // or clean 

Limpe o repository git e todos os submódulos recursivamente

O comando a seguir limpará o repository git atual e todos os seus submódulos recursivamente:

 (git clean -d -x -f && git submodule foreach --recursive git clean -d -x -f) 

oh-my-zsh com zsh fornece esses grandes aliases através do plugin git. Eles podem ser usados ​​em bash também.

gclean='git clean -fd'
gpristine='git reset --hard && git clean -dfx'

  • gclean remove diretórios não gclean além de arquivos não rastreados .
  • gpristine redefinir hard as mudanças locais, remover diretórios não rastreados, arquivos não rastreados e não usar as regras padrão de ignorar lidas de .gitignore (por diretório) e $ GIT_DIR / info / exclude, mas ainda usar as regras ignore dadas com opções -e . Isso permite remover todos os arquivos não acompanhados, incluindo produtos de criação. Isso pode ser usado (possivelmente em conjunto com o git reset) para criar um diretório de trabalho primitivo para testar uma compilation limpa .
 git clean -f 

irá remover os arquivos não rastreados do git atual

 git clean -fd 

quando você deseja remover diretórios e arquivos, isso excluirá apenas diretórios e arquivos não rastreados

Eu não usei as respostas mais populares aqui – o git não exclui arquivos não rastreados do repository de qualquer maneira. Não faço ideia do porquê. Esta é a minha resposta super simplificada sem os COMANDOS ESPECIAIS DO GIT!

Missão: excluir arquivos não rastreados do repository git:

  1. Mover arquivos e pastas para outro lugar da sua pasta de projeto local por um tempo
  2. Exclua todas as linhas em .gitignore sobre esses arquivos e pastas para o commit
  3. Git add.
  4. Git commit -m “Limpando o repository de arquivos não rastreados”
  5. Impulso Git

Todos os arquivos e pastas foram excluídos do repository.

Vamos restaurá-los no host local se você precisar deles:

  1. Retornar todos os arquivos e pastas que você moveu temporariamente para a pasta do projeto local novamente
  2. Mova de volta todas as linhas sobre esses arquivos e pastas para .gitignore
  3. Git add.
  4. Git commit -m “Verificando ou arquivos não aparecendo novamente no repository git”
  5. Impulso Git

Você terminou!