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




listar branches git (20)

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


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

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

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

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

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

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.


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

Remover arquivos não rastreados da árvore 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 compilação 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 repositório 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.


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 incluir / 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


Isso é o que eu sempre uso:

git clean -fdx

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


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!

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

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


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 .


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

git clean -d -f -f


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 .


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 .


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


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 árvore de diretórios do repositório. 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 .


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


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á.


Remova todas as pastas e arquivos extras neste repositório + 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 repositório, mas não seus submódulos

git clean -fdx

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

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

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 compilação limpa .






git-branch