Como você exclui arquivos locais não rastreados da sua árvore de trabalho atual?
git
branch
git-branch
Somente leitura
fonte
fonte
git clean
agora tem um modo interativo ! Veja minha resposta a esta outra pergunta : git 1.8.4+git clean
ou alguma variação nas respostas abaixo, incluindo a versão interativa para excluir apenas arquivos seletivos, mas o modo interativo pode ser entediante. Faça o que fizer, compreenda o quegit clean
será excluído ou usado--dry-run
para que ele seja informado sem excluir nada.rm files-to-be-deleted
Respostas:
A etapa 1 é mostrar o que será excluído usando a
-n
opção:Etapa limpa - cuidado: isso excluirá arquivos :
git clean -f -d
ougit clean -fd
git clean -f -X
ougit clean -fX
git clean -f -x
ougit clean -fx
Observe a diferença entre maiúsculas e minúsculas nos
X
dois últimos comandos.Se
clean.requireForce
estiver definido como "true" (o padrão) em sua configuração, será necessário especificar-f
caso contrário, nada realmente acontecerá.Veja novamente os
git-clean
documentos para obter mais informações.fonte
git clean -f
funciona apenas no diretório em que é chamado (e subdiretórios). Se você deseja limpar toda a cópia de trabalho, chame-a em seu diretório raiz.git clean -f :/
funciona como se você o tivesse executado no diretório de repositório raiz. Veja também respostas posteriores que também representam sub-módulos comgit clean -ffxd :/
Use
git clean -f -d
para garantir que os diretórios também sejam removidos.Na verdade, não remova nada, apenas mostre o que seria feito.
ou
Remova os diretórios não rastreados, além dos arquivos não rastreados. 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
-f
opção duas vezes se você realmente deseja remover esse diretório.Você pode então verificar se seus arquivos foram realmente usados
git status
.fonte
git clean -n -d
git clean -nd
egit clean -fd
.Estou surpreso que ninguém tenha mencionado isso antes:
Isso significa interativo e você terá uma rápida visão geral 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 jogar um arquivo
-d
se quiser também cuidar de pastas vazias. No final, cria um bom alias:Dito isto, a exploração manual adicional de comandos interativos pode ser cansativa para usuários experientes. Hoje em dia eu só uso o já mencionado
git clean -fd
fonte
git clean -i
funciona apenas se chamado a partir da raiz da cópia de trabalho?git-clean
- Remova arquivos não rastreados da árvore de trabalhofonte
Se o diretório não rastreado for seu próprio repositório git (por exemplo, submódulo), você precisará usar
-f
duas vezes:git clean -d -f -f
fonte
Maneira simples de remover arquivos não rastreados
Para remover todos os arquivos não rastreados, a maneira mais simples é adicionar todos eles primeiro e redefinir o repositório, conforme abaixo
fonte
git add --all
porgit add .
. Portanto, você pode fazer isso de forma mais curta na linhagit add . && git reset --hard HEAD
(tenha muito cuidado com este comando) .git clean
?git clean
aparentemente também exclui tudo o que é ignorado. Apenas excluiu minhanode_modules
pasta. Fazer isso primeiro prepararia todos os arquivos, exceto os ignorados, e os excluiria fazendo uma redefinição. Arquivos ignorados não serão tocados.git clean -n
qualquer maneira antes de fazer a exclusão real (ou usargit clean -i
).git clean
exclui os arquivos ignorados apenas se você usar a opção-x
ou-X
, caso contrário, apenas os arquivos não rastreados.Eu gosto
git stash push -u
porque você pode desfazer todos elesgit stash pop
.EDIT: Também encontrei uma maneira de mostrar o arquivo não rastreado em um stash (por exemplo
git show stash@{0}^3
) https://stackoverflow.com/a/12681856/338986EDIT2:
git stash save
foi preterido em favor depush
. Obrigado @ script-wolf.fonte
-u
é equivalente a--include-untracked
. Você pode encontrar uma ajuda comgit help stash
.save
opção foi preterida em favor depush
, que faz o mesmo, mas mais. Você pode ler mais aqui, /programming/44680028/whats-the-difference-between-git-stash-save-and-git-stash-push/44681952É isso que eu sempre uso:
Para um projeto muito grande, você pode executá-lo algumas vezes.
fonte
git-clean é o que você está procurando. É usado para remover arquivos não rastreados da árvore de trabalho.
fonte
Se necessário, para remover arquivos não rastreados de um subdiretório específico,
E maneira combinada de excluir diretórios / arquivos não rastreados e arquivos ignorados.
depois disso, você terá arquivos modificados apenas em
git status
.fonte
Remova todas as pastas e arquivos extras neste sub-módulo repo +
Isso leva você ao mesmo estado que o novo clone.
Remova todas as pastas e arquivos extras neste repositório, mas não seus submódulos
Remova pastas extras, mas não arquivos (por exemplo, pasta build ou logs)
Remova pastas extras + arquivos ignorados (mas não os arquivos adicionados recentemente)
Se o arquivo não foi ignorado e ainda não fez check-in, ele permanece. Observe a capital X.
Novo modo interativo
fonte
git clean -fd
remove diretóriogit clean -fX
remove arquivos ignoradosgit clean -fx
remove arquivos ignorados e não ignoradospode ser usado todas as opções acima em combinação como
git clean -fdXx
verifique o manual do git para obter mais ajuda
fonte
git clean -fdXx
produz a mensagem de erro "fatal: -x e -X não podem ser usados juntos" (usando git-2.8). Para sua última frase dentro da sua resposta, forneça um link para o manual do git. CheersOK, é fácil excluir arquivos e pastas não rastreados indesejados
git
na linha de comando, basta fazer o seguinte:Verifique novamente antes de fazer isso, pois excluirá os arquivos e pastas sem fazer nenhum histórico ...
Também neste caso,
-f
significa força e-d
significa diretório ...Portanto, se você quiser excluir apenas arquivos, poderá usar
-f
apenas:Se você deseja excluir (diretórios) e arquivos, é possível excluir apenas diretórios e arquivos não rastreados como este:
Além disso, você pode usar o
-x
sinalizador para incluir os arquivos que são ignorados pelo git. Isso seria útil se você deseja excluir tudo.E adicionando
-i
sinalizador, o git solicita permissão para excluir arquivos um por um em qualquer lugar.Se você não tiver certeza e deseja verificar as coisas primeiro, adicione
-n
sinalizador.Use
-q
se você não quiser ver nenhum relatório após a exclusão bem-sucedida.Também crio a imagem abaixo para torná-la mais memorável, especialmente já vi muitas pessoas confundirem
-f
por limpar a pasta às vezes ou misturá-la de alguma forma!fonte
Uma maneira melhor é usar: git clean
Isso remove arquivos não rastreados, incluindo diretórios
(-d)
e arquivos ignorados porgit (-x)
.Além disso, substitua o
-f
argumento por-n
para executar umdry-run
ou-i
para o modo interativo e ele informará o que será removido.fonte
Abordagem interativa do usuário:
-i para interativo
-f para forçar
-d para o diretório
-x para arquivos ignorados (inclua se necessário)
Nota: Adicione -n ou --dry-run para verificar apenas o que ele fará.
fonte
Um truque para essa situação que acabei de inventar e experimentar (que funciona perfeitamente):
Cuidado! Certifique-se de confirmar as alterações necessárias (mesmo em arquivos não rastreados) antes de fazer isso .
fonte
git add .
git commit -m 'about to delete'
git reset --hard HEAD~
git add . && git reset --hard HEAD
git add . && git reset --hard
git reset --hard
redefine todas as alterações não confirmadas, mas os arquivos não rastreados para o estado da confirmação mais recente. É por isso que primeiro é necessáriogit add .
- que organiza todos os arquivos untracked (assim eles são repostos, também)git clean -f -d -x $(git rev-parse --show-cdup)
aplica-se limpo ao diretório raiz, não importa onde você o chame em uma árvore de diretórios do repositório. Eu o uso o tempo todo, pois não o força a deixar a pasta em que você está trabalhando agora e permite limpar e confirmar o local onde está.Certifique-se de que as bandeiras
-f
,-d
,-x
corresponder às suas necessidades:Existem outras bandeiras também disponíveis, basta verificar
git clean --help
.fonte
Para mim somente o seguinte funcionou:
Em todos os outros casos, eu recebia a mensagem "Ignorando Diretório" para alguns subdiretórios.
fonte
-x
e apenas useigit clean -ffd
para evitar apagar arquivos no .gitignore.Se você deseja excluir os arquivos listados como não rastreados por 'status git'
Eu prefiro isso para 'git clean' porque 'git clean' excluirá os arquivos ignorados pelo git, portanto, sua próxima compilação precisará reconstruir tudo e você também poderá perder as configurações do IDE.
fonte
Para saber o que será excluído antes de excluir:
git clean -d -n
Ele produzirá algo como:
Removeria sample.txt
Para excluir tudo listado na saída do comando anterior:
git clean -d -f
Ele produzirá algo como:
Removendo sample.txt
fonte
Para remover os arquivos não rastreados, você deve primeiro usar o comando para exibir os arquivos que serão afetados pela limpeza
Isso mostrará a lista de arquivos que serão excluídos. Agora, para realmente excluir esses arquivos, use este comando:
fonte
Tenha cuidado ao executar o comando `git clean`.
Sempre use
-n
antes de executar o comando real, pois ele mostrará quais arquivos serão removidos.Por padrão,
git clean
apenas remove arquivos não rastreados que não são ignorados. Qualquer arquivo que corresponda a um padrão no seu arquivo .gitignore ou em outros arquivos ignorados não será removido. Se você deseja remover esses arquivos também, pode adicionar um-x
ao comando clean.Há também o modo interativo disponível
-i
com o comando cleanalternativamente
Se você não tiver 100% de certeza de que a exclusão de seu trabalho não confirmado é segura, use a ocultação
Ele também limpa seu diretório, mas oferece flexibilidade para recuperar os arquivos a qualquer momento, usando stash com apply ou pop . Então, mais tarde, você pode limpar seu estoque usando:
fonte
git stash save and type some comment as to what this stash was for
git clean -f to remove untracked files from working directory.
Eu cobri alguns conceitos básicos aqui no meu blog, git-intro-basic-command
fonte
O comando uggested para remover arquivos não rastreados do git docs é 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. vamos ver as opções disponíveis restantes.Opções disponíveis:
Explicação:
1. -d
Remova os diretórios não rastreados, além dos arquivos não rastreados. 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 deseja remover esse diretório.
2. -f, --force
Se a variável de configuração do Git clean.requireForce não estiver configurada como false, o git clean se recusará a executar, a menos que seja fornecido -f, -n ou -i.
3. -i, - interativo
Mostre o que seria feito e limpe os arquivos interativamente. Consulte "Modo interativo" para obter detalhes.
4. -n, --dry-run
Na verdade, não remova nada, apenas mostre o que seria feito.
5. -q, --quiet
Fique quieto, apenas relate erros, mas não os arquivos que foram removidos com sucesso.
6. -e, --exclude =
Além dos encontrados em .gitignore (por diretório) e $ GIT_DIR / info / exclude, também considere esses padrões no conjunto das regras de ignorar em vigor.
7. -x
Não use as regras padrão de ignorar lidas em .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 rastreados, incluindo produtos de compilação. Isso pode ser usado (possivelmente em conjunto com o git reset) para criar um diretório de trabalho novo para testar uma compilação limpa.
8. -X
Remova apenas os arquivos ignorados pelo Git. Isso pode ser útil para reconstruir tudo do zero, mas mantenha os arquivos criados manualmente.
fonte
uggested
mas isso é apenas um "uggestion
lol "O
git clean
comando normal não remove arquivos não rastreados com o meugit version 2.9.0.windows.1
.fonte
Podemos facilmente remover arquivos não rastreados locais da árvore de trabalho atual do git usando os comentários abaixo do git.
Exemplo:
Ligações:
fonte
git clean -ffdx
é a soluçãofonte
removerá os arquivos não rastreados do git atual
quando você deseja remover diretórios e arquivos, isso excluirá apenas diretórios e arquivos não rastreados
fonte
O oh-my-zsh com zsh fornece esses ótimos aliases 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 rastreados, além de arquivos não rastreados .gpristine
redefina as alterações locais, remova diretórios não rastreados, arquivos não rastreados e não use as regras padrão de ignorar lidas em .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 rastreados, incluindo produtos de construção. Isso pode ser usado (possivelmente em conjunto com o git reset) para criar um diretório de trabalho novo para testar uma compilação limpa .fonte
bash
. Eu editei minha resposta para refletir isso.Eu gosto de usar o
git stash
comando, mais tarde você pode obter arquivos escondidos e alterações.git clean
também é uma boa opção, mas depende totalmente de sua necessidade. aqui está a explicação do git stash e do git clean, 7.3 Git Tools - Armazenamento e limpezafonte