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




listar branches git (24)

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


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

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


Eu gosto de git stash push -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 [email protected]{0}^3 ) https://.com/a/12681856/338986

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


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


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.


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


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

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 .


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

git clean - Remove arquivos não rastreados da árvore 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 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.

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

8. -X

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


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


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

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

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 .


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



Eu não usei as respostas mais populares aqui - o git não exclui arquivos não rastreados do repositório 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 repositório 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 repositório de arquivos não rastreados”
  5. Impulso Git

Todos os arquivos e pastas foram excluídos do repositório.

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 repositório git”
  5. Impulso Git

Você terminou!


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 .


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


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 .

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

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


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 mim só seguindo funcionou:

git clean -ffdx

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


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)




git-branch