Como excluir arquivos locais (não rastreados) da árvore de trabalho atual do Git?

Como remover arquivos locais desnecessários da árvore de trabalho atual?

6113
14 сент. Readonly set 14 de setembro 2008-09-14 12:06 '08 às 12:06 pm 2008-09-14 12:06
@ 36 respostas
  • 1
  • 2

De acordo com a documentação do git clean

Exclua arquivos desnecessários da árvore de trabalho


Passo 1 - mostra o que será removido com o parâmetro -n :

 git clean -n 

Etapa de limpeza - Cuidado: isso excluirá os 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 nos eventos no X para as duas últimas equipes.

Se clean.requireForce definido como "true" (o padrão) em sua configuração, você deverá especificar -f , caso contrário, nada acontecerá.

Veja a documentação do git-clean novamente para mais informações.

Funções

-f

- força

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

-x

Não use as regras padrão de ignorar lidas de .gitignore (para cada diretório) e $ GIT_DIR / info / exclude, mas ainda use as regras de ignorar especificadas com as opções -e. Isso permite que você exclua todos os arquivos não processados, incluindo a montagem de produtos. Isso pode ser usado (possivelmente em conjunto com a redefinição do Git) para criar um diretório de trabalho intacto para verificar se há uma compilação limpa.

-X

Exclua apenas arquivos ignorados pelo Git. Isso pode ser útil para recuperar tudo do zero, mas salvando arquivos criados manualmente.

n

- seco

Na verdade, não apague nada, apenas mostre o que será feito.

-d

Exclua diretórios desnecessários além dos arquivos brutos. Se um diretório não assinado for gerenciado por outro repositório Git, ele não será excluído por padrão. Use a opção -f duas vezes se você realmente quiser remover esse diretório.

7973
15 сент. Resposta dada por Andreas Ericsson em 15 de set 2008-09-15 20:32 '08 at 8:32 pm 2008-09-15 20:32

Use git clean -f -d para garantir que os diretórios também sejam excluídos.

border=0

Então você pode verificar se seus arquivos realmente passaram pelo git status .

866
26 мая '09 в 23:59 2009-05-26 23:59 a resposta é dada por robert.berger em 26 de maio de 2009 às 23:59 2009-05-26 23:59

Estou surpreso que ninguém tenha mencionado isso antes:

 git clean -i 

Isso significa interatividade e você obtém uma breve visão geral do que será removido, oferecendo a opção de incluir / excluir arquivos afetados. Em geral, ainda é mais rápido do que executar o obrigatório --dry-run antes da limpeza real.

Você precisará lançar em -d se também quiser cuidar de pastas vazias. No final, ele faz um bom pseudônimo:

 git iclean 

Assim, a implementação manual adicional de comandos interativos pode se cansar para usuários avançados. Hoje em dia eu apenas uso o já mencionado git clean -fd

427
30 дек. A resposta é dada pela SystematicFrank 30 de dezembro. 2013-12-30 23:12 '14 às 11:12 2013-12-30 23:12
388
14 сент. A resposta é dada por Fire Lancer em 14 de setembro. 2008-09-14 12:09 '08 às 12:09 2008-09-14 12:09

Se o diretório não rastreado for seu próprio repositório git (por exemplo, um sub-módulo), você precisará usar -f duas vezes:

git clean -d -f -f

213
25 янв. Resposta dada por Michał Szajbe em 25 de janeiro 2013-01-25 15:24 '13 às 15:24 2013-01-25 15:24

Maneira fácil de excluir arquivos não acompanhados

Para excluir todos os arquivos não acompanhados, a maneira mais fácil é primeiro adicionar todos eles e redefinir o repositório, conforme mostrado abaixo.

 git add --all git reset --hard HEAD 

156
03 июня '16 в 15:16 2016-06-03 15:16 Resposta é dada por Thanga em 03 de junho '16 às 15:16 2016-06-03 15:16

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

EDIT: Eu também encontrei uma maneira de mostrar um arquivo untraceable no cache (por exemplo, git show stash@{0}^3 ) levitrasi.net.site/questions/507 / ...

EDIT2: git stash save está obsoleto em favor do push . Obrigado @ script lobo.

121
11 янв. Hiroshi respondeu 11 de janeiro 2014-01-11 03:41 '14 às 3:41 2014-01-11 03:41

Isso é o que eu sempre uso:

 git clean -fdx 

Para um projeto muito grande, você pode executá-lo várias vezes.

98
25 нояб. a resposta é dada por Oscar Fraxedas em 25 de novembro. 2013-11-25 17:16 '13 às 17:16 2013-11-25 17:16

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

83
14 сент. A resposta é dada Espo 14 de setembro 2008-09-14 12:08 '08 às 12:08 2008-09-14 12:08

Se você quiser remover arquivos não assinados de um subdiretório específico,

 git clean -f {dir_path} 

E uma maneira combinada de remover arquivos / arquivos não reproduzíveis e arquivos ignorados.

 git clean -fxd {dir_path} 

Depois disso, você só modificará os arquivos no git status .

73
24 сент. A resposta é dada Vijay C 24 set. 2013-09-24 09:28 '13 às 9:28 2013-09-24 09:28

git clean -fd apaga o diretório

git clean -fX remove arquivos ignorados

git clean -fX remove arquivos ignorados e não ignorados

Você pode usar todas as opções acima em combinação como

git clean -fdXx

Confira o manual do git para mais ajuda.

48
22 янв. A resposta é dada Pooja 22 de janeiro 2015-01-22 09:33 '15 às 9:33 2015-01-22 09:33

Exclua todas as pastas e arquivos desnecessários neste repo + sub-módulos

Isso leva você ao mesmo estado de um novo clone.

 git clean -ffdx 

Exclua todas as pastas e arquivos adicionais neste repositório, mas não seus submódulos.

 git clean -fdx 

Excluir apenas pastas extras, mas não arquivos (por exemplo, a pasta de compilação)

 git clean -fd 

Exclua pastas desnecessárias + arquivos ausentes (mas não novos arquivos)

Se o arquivo não foi ignorado e ainda não foi registrado, ele permanece. Observe a capital X.

 git clean -fdX 

Novo modo interativo

 git clean 
37
12 февр. A resposta é dada por Shital Shah em 12 de fevereiro. 2017-02-12 11:33 '17 às 11:33 2017-02-12 11:33

OK, remover arquivos e pastas desnecessários e não rastreados é fácil, usando o git na linha de comando, apenas faça assim:

 git clean -fd 

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

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

Portanto, se você quiser excluir apenas arquivos, só poderá usar -f :

 git clean -f 

Se você deseja excluir (diretórios) e arquivos, você pode excluir somente diretórios e arquivos não monitorados, por exemplo:

 git clean -fd 

Você também pode usar o sinalizador -x para incluir arquivos ignorados pelo git. Isso seria útil se você quiser excluir tudo.

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

Se você não tiver certeza e deseja verificar tudo primeiro, adicione o sinalizador -n .

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

Eu também criar uma imagem abaixo para torná-lo mais memorável, especialmente eu tenho visto quantas pessoas confundem -f com a limpeza de uma pasta ou de alguma forma confundi-lo!


2019

Melhor usado: git limpo

 git clean -d -x -f 

Isso remove arquivos desnecessários, incluindo diretórios (-d) e arquivos que são ignorados pelo git (-x) .

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

32
16 апр. A resposta é dada Chactory 16 abr. 2015-04-16 09:49 '15 às 9:49 2015-04-16 09:49

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ça
-d para o diretório
-x para arquivos ignorados (adicionar, se necessário)

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

20
02 марта '17 в 23:09 2017-03-02 23:09 a resposta é dada bit_cracker007 março 02 '17 às 23:09 2017-03-02 23:09

Para mim, só depois do trabalho:

 git clean -ffdx 

Em todos os outros casos, recebi a mensagem "Ignorando Diretório" para alguns subdiretórios.

15
16 авг. a resposta é dada rahul286 16 ago. 2016-08-16 18:29 '16 às 18:29 2016-08-16 18:29

git clean -f -d -x $(git rev-parse --show-cdup) é usado apenas para o diretório raiz, não importa onde você o chame na árvore de diretórios do repositório. Eu o uso o tempo todo, já que ele não o força a sair da pasta em que você está trabalhando atualmente, e permite que você limpe e corrija o direito do lugar onde você está.

Certifique-se de que os sinalizadores -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, apenas escolha git clean --help .

15
02 дек. A resposta é dada por Nikita Leonov 02 de dezembro 2015-12-02 20:57 '15 às 20:57 2015-12-02 20:57

Se você quiser apenas excluir os arquivos listados como não marcados por "git status"

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

Eu prefiro esse "git clean", porque "git clean" irá remover os arquivos ignorados pelo git, então sua próxima build terá que reconstruir tudo e você também pode perder as configurações do IDE.

13
02 марта '16 в 5:09 2016-03-02 05:09 a resposta é dada jazzdev 02 March '16 at 5:09 2016-03-02 05:09

Viabilidade para tal situação que acabei de inventar e tentei (que funciona muito bem):

 git add . git reset --hard HEAD 
Cuidado Certifique-se de copiar quaisquer alterações necessárias (mesmo para arquivos não sinceros) antes de fazer isso .
13
21 февр. a resposta é dada para thybzi 21 de fevereiro 2016-02-21 20:29 '16 às 8:29 pm 2016-02-21 20:29

Para descobrir o que será excluído antes da remoção real:

git clean -d -n

Ele irá mostrar algo como:

Remove sample.txt

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

git clean -d -f

Ele irá mostrar algo como:

Desinstalar exemplo.txt

10
16 февр. A resposta é dada por Omar Mowafi em 16 de fevereiro. 2016-02-16 11:42 '16 às 11:42 2016-02-16 11:42

Para excluir arquivos não utilizados, 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 a serem excluídos. Agora, para realmente excluir esses arquivos, use o seguinte comando:

 git clean -fd 
8
25 окт. resposta dada por Gaurav 25 de outubro. 2016-10-25 12:09 '16 às 12:09 pm 2016-10-25 12:09

Alguém deveria realmente mencionar:

 git clean [<options>] 

Estou certo

7
27 авг. Resposta dada por joeytwiddle 27 ago 2015-08-27 13:18 15h às 13h18 de 2015-08-27 13:18

Tenha cuidado ao executar o comando `git clean`.

Sempre use -n antes de executar o comando real, mostrando quais arquivos serão excluídos.

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

Por padrão, o git clean excluirá apenas os arquivos não utilizados que não forem ignorados. Qualquer arquivo que corresponda ao padrão em seu .gitignore ou outros arquivos ignorados não será excluído. Se você também quiser excluir esses arquivos, poderá adicionar o comando -x a um comando limpo.

 git clean -f -d -x 

Há também um modo interativo -i com um comando limpo.

 git clean -x -i 

Alternativamente

Se você não está 100% certo de que a exclusão do seu trabalho inacabado é segura, você pode usar stashing.

 git stash --all 

Ele também limpará seu diretório, mas dará a você a flexibilidade de extrair arquivos a qualquer momento usando stash com apply ou pop . Então, mais tarde, você pode limpar seu cache usando:

 git stash drop // or clean 
6
22 окт. Responder DevWL 22 de out. 2017-10-22 00:44 '17 às 0:44 2017-10-22 00:44

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

Eu cobri alguns dos princípios básicos aqui no meu blog, git intro-basic-comandos

5
16 февр. a resposta é dada ysk 16 fev . 2017-02-16 12:05 '17 às 12:05 2017-02-16 12:05

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

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

Exemplo:

 git reset --hard HEAD 

Referências:

  1. https://git-scm.com/docs/git-reset
  2. Como uso o 'git reset --hard HEAD' para retornar ao commit anterior?
  3. Redefinir a ramificação do repositório local para que pareça com o repositório remoto HEAD
  4. https://jwiegley.github.io/git-from-the-bottom-up/3-Reset/4-doing-a-hard-reset.html
5

Comando ued Excluir arquivos brutos do git docs git clean

git clean - remove arquivos quebrados da árvore de trabalho

Método sugerido: Modo de interação com git clean -i para que possamos controlá-lo. veja as opções disponíveis restantes.

Opções disponíveis:

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

Explicação:

1. -d

Exclua diretórios desnecessários além dos arquivos brutos. Se um diretório não assinado for gerenciado por outro repositório git, ele não será excluído 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 git clean.requireForce não estiver definida como false, o git clean recusará a inicialização, a menos que -f, -n ou -i seja especificado.

3. -i, --interativo

Mostre o que será feito e limpe os arquivos online. Para mais detalhes, consulte "Modo Interativo".

4. -n, --dry-run

Na verdade, não apague nada, apenas mostre o que será feito.

5. -q, --quiet

Fique calmo, apenas relate erros, mas não exclua arquivos.

6. -e, --exclude =

Além daqueles encontrados em .gitignore (para cada diretório) e $ GIT_DIR / info / exclude, considere também esses padrões no conjunto de regras válidas de ignorar.

7. -x

Não use as regras padrão de ignorar lidas de .gitignore (para cada diretório) e $ GIT_DIR / info / exclude, mas ainda use as regras de ignorar especificadas com as opções -e. Isso permite que você exclua todos os arquivos não processados, incluindo a montagem de produtos. Isso pode ser usado (possivelmente em conjunto com o git reset) para criar um diretório de trabalho intocado para verificar se há uma compilação limpa.

8. -X

Exclua apenas arquivos ignorados pelo Git. Isso pode ser útil para recuperar tudo do zero, mas salvando arquivos criados manualmente.

01 сент. Resposta dada por Mohideen ibn Mohammed em 01 de set 2017-09-01 09:23 '17 às 9:23 am 2017-09-01 09:23

O comando usual git clean não remove arquivos não usados ​​com git version 2.9.0.windows.1 .

 $ git clean -fdx # doesn't remove untracked files $ git clean -fdx * # Append star then it works! 
5
11 окт. a resposta é dada em 11 de outubro . 2016-10-11 03:14 '16 às 3:14 2016-10-11 03:14

Limpe o repositório git e todos os submódulos recursivamente

O comando a seguir limpa recursivamente o repositório git atual e todos os seus submódulos:

 (git clean -d -x -f  git submodule foreach --recursive git clean -d -x -f) 
3
25 сент. a resposta é dada Sergey 25 de setembro 2017-09-25 19:25 '17 às 19:25 2017-09-25 19:25

oh-my-zsh com zsh fornece esses excelentes apelidos através do plugin git. Eles também podem ser usados ​​no bash.

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

  • gclean remove diretórios não rastreáveis, além de arquivos não rastreados.
  • gpristine remove alterações locais, remove diretórios não rastreados, arquivos não acompanhados e não usa regras padrão de ignorar lidas de .gitignore (para cada diretório) e $ GIT_DIR / info / exclude, mas ainda usa regras de ignorar definidas com a opção -e. Isso permite que você exclua todos os arquivos não acompanhados, incluindo produtos de criação. Isso pode ser usado (possivelmente em combinação com o git reset) para criar o diretório de trabalho primário para testar uma compilação limpa.
3
02 нояб. A resposta é dada ZenLulz 02 de novembro 2017-11-02 11:24 '17 às 11:24 2017-11-02 11:24
 git clean -f 

removerá arquivos não rastreados do git atual

 git clean -fd 

quando você deseja excluir diretórios e arquivos, ele excluirá apenas diretórios e arquivos não acompanhados.

1
18 мая '18 в 9:04 2018-05-18 09:04 a resposta é dada por sudhir Vishwakarma em 18 de maio '18 às 9:04 2018-05-18 09:04
  • 1
  • 2

Outras questões sobre ou Ask a Question