Como excluir todas as alterações do diretório ativo, incluindo novos arquivos não rastreados. Eu sei dissogit checkout -f
faz isso, mas não exclui novos arquivos não rastreados criados desde a última confirmação.
Alguém tem uma idéia de como fazer isso?
git help reset
egit help clean
Respostas:
Para ver o que será excluído antes, sem realmente excluí-lo, use o
-n
sinalizador (isso é basicamente uma execução de teste). Quando você estiver realmente pronto para excluir, remova a-n
bandeira:git clean -nfd
fonte
git clean -fxd
pode realmente ser realmente perigoso se você não souber o que está fazendo. Você pode acabar excluindo permanentemente alguns arquivos não rastreados muito importantes, como seu banco de dados, etc. Tenha cuidado.git clean -f -d
também excluirá arquivos de pastas ignoradas. Portanto, todos os logs locais e coisas assim desaparecerão. Geralmente não é um grande problema, mas é melhor saber.Método mais seguro, que eu uso com freqüência:
Explicação da sintaxe conforme a
/docs/git-clean
página:-f
(alias:--force
. Se a variável de configuração do Git clean.requireForce não estiver definida como false, o git clean se recusará a excluir arquivos ou diretórios, a menos que seja fornecido -f, -n ou -i. O Git se recusará a excluir diretórios com o subdiretório ou arquivo .git, a menos que um segundo -f seja fornecido.-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.Conforme mencionado nos comentários, pode ser preferível fazer uma
git clean -nd
execução a seco e informar o que seria excluído antes de realmente excluí-lo.Link para a
git clean
página do documento: https://git-scm.com/docs/git-cleanfonte
git clean -nd .
antes de realmente apagar arquivos usandogit clean -fd .
add -A
+commit -a
+ em brancorevert head
antesgit clean
. A revisão de cada exclusão simplesmente não é dimensionada para os principais cenários. Além disso, corrida a seco não é uma bala de prata: e se você perdeu alguma coisa ou cometeu um erro durante a revisão?Para todos os arquivos não faseados, use:
o
.
no final é importante.Você pode substituir
.
por um nome de subdiretório para limpar apenas um subdiretório específico do seu projeto. O problema é tratado especificamente aqui .fonte
src/app/work/filename.js
e../app/working/test/filename.js
. Apenas o usogit checkout -- .
no ramo excluiu apenas o primeiro arquivo ( sem os principais ../ ). Então eu tive quecd ../
entrar no segundo diretório de localização para excluir o segundo arquivo usando esse comando.Dê uma olhada no
git clean
comando.fonte
git clean -i
e escolhi "limpar" no menu - isso finalmente removeu novos arquivos.Os seguintes trabalhos:
Observe que isso descartará as alterações locais em etapas e em etapas. Portanto, você deve confirmar o que deseja manter antes de executar esses comandos.
Um caso de uso típico: você moveu muitos arquivos ou diretórios e deseja voltar ao estado original.
Créditos: https://stackoverflow.com/a/52719/246724
fonte
git stash drop
?git add -A .
). Perdi 30m porque não houve correspondência de arquivos. Obrigado!Você pode fazer isso em duas etapas:
git checkout -f
git clean -fd
fonte
Eu pensei que era ( aviso: a seguir vai acabar com tudo )
O
reset
para desfazer as alterações. Oclean
para remover qualquer não controlada de f iles e d irectories.fonte
git pull
depois:CONFLICT (content): Merge conflict in...
eu só resolveu este por umgit pull --strategy=ours
Ele excluirá todos os arquivos não rastreados.
fonte
git clean -i
mostrará primeiro os itens a serem excluídos e prosseguirá após a sua confirmação. Acho isso útil ao lidar com arquivos importantes que não devem ser excluídos acidentalmente.Consulte
git help clean
para obter mais informações, incluindo algumas outras opções úteis.fonte
Se você quiser descartar todas as alterações, poderá usar qualquer uma das opções válidas em um alias em
.gitconfig
. Por exemplo:Uso:
git discard
fonte
Uma solução alternativa é confirmar as alterações e depois se livrar delas. Isso não tem um benefício imediato a princípio, mas abre a possibilidade de confirmar em partes e criar uma tag git para backup.
Você pode fazer isso na ramificação atual, assim:
Ou você pode fazê-lo na cabeça desanexada. (supondo que você comece na ramificação BRANCHNAME):
No entanto, o que eu costumo fazer é confirmar em partes, depois nomeie algumas ou todas as confirmações como "DISCARD: ...". Em seguida, use o rebase interativo para remover os commits ruins e manter os bons.
Isso é mais detalhado, mas permite revisar exatamente quais alterações você deseja descartar.
Os atalhos
git lol
egit lola
foram muito úteis com este fluxo de trabalho.fonte
Para uma pasta específica, usei:
fonte
Esta é provavelmente uma resposta noob, mas: Eu uso o TortoiseGit para Windows e ele possui um recurso interessante chamado REVERT. Portanto, o que você faz para reverter suas alterações não-estocadas não-estaduais locais é:
fonte