Eu estava seguindo as instruções sobre como fazer páginas no github e esqueci de descer para o meu subdiretório git. Como resultado, acabei de destruir um diretório inteiro de documentos com git clean -fdx
.
Existe alguma maneira de desfazer esse erro terrível?
119
git clean -fdx
sem qualquer aviso, que a operação é muito perigosa. Eu me pergunto quantas pessoas destruíram irrevogavelmente seus arquivos com essa sugestão aparentemente inocente.git clean
ligações inadvertidas . Além disso, tente sair do hábito de limpar sem verificar. Crie um script Powershell ou Bash que pode ser chamado e será executadogit clean -fdxn
com um prompt de confirmação antes de você realmente executar a limpeza incrivelmente destrutiva.Respostas:
Não. Esses arquivos sumiram.
(Apenas verificado no Linux: git clean calls
unlink()
, e não faz backup de nada de antemão.)fonte
git clean
, apagou acidentalmente as alterações armazenadas na.idea
pasta oculta e o Histórico Local me salvou!Fará uma simulação e mostrará quais arquivos seriam excluídos se você executasse
(claro que isso só é útil se você souber disso com antecedência, mas para a próxima vez)
fonte
-n
funciona na maioria dos comandos git (e muitos outros comandos * nix).IntelliJ / Android Studio permite restaurar arquivos do histórico local .
fonte
Não. "Git clean -fdx" irá deletar todos os arquivos e diretórios que o git não rastreia de seu diretório de trabalho. Como o Git não rastreia esses arquivos, ele não terá nenhum backup desses arquivos. Pelo menos não normalmente.
Se você fez um 'git add' em um desses arquivos relativamente recentemente (mas abortou o commit), há uma chance de encontrá-lo com 'git fsck --lost-found'. Vale a pena tentar, mas não tenha muitas esperanças.
No futuro, você deve considerar se comprometer algumas vezes com demasiada frequência do que algumas vezes raramente. Dessa forma, você terá pelo menos um backup local, mesmo se não acabar enviando esses commits para um remoto.
fonte
mkdir
executá-loComo @kusma mencionou acima, se você tiver sorte (se já fez "git add"), poderá usar o seguinte para extrair o objeto inteiro:
Dessa forma, ele irá procurar todos os tipos de pedaços, coletar as diferenças inteiras e adicionar a um arquivo que você pode extrair o arquivo perdido. No meu caso, perdi uma aula inteira de Java.
fonte
Se você estiver usando qualquer IDE Jetbrains, há uma opção para ver o histórico local de um arquivo. Caso tenha feito isso
git clean
, você pode recriar o arquivo e verificar o histórico local do arquivo e restaurá-lo a partir daí.Trabalhou para mim em um único arquivo. Para um diretório completo, não tenho ideia de como fazer isso.
fonte
Eu tive esse problema hoje.
Como outros já disseram, o git não guarda os arquivos.
A única maneira de desfazer isso é com um utilitário de desfazer exclusão. Usei "extundelete" e recuperei tudo, mas sua milhagem / sistema de arquivos pode variar.
fonte
Se você estiver trabalhando no Eclipse, uma das soluções possíveis é restaurar do histórico local do Eclipse.
fonte
Na verdade, sim ! Isso é possível! Mas sem usar comandos git.
Tudo que precisamos é apenas de uma ferramenta de recuperação de arquivos como o Recuva .
Basta mencionar o caminho de onde ele foi excluído e deixá-lo recuperar os arquivos.
Também aqui estão algumas notas úteis para usar esse aplicativo:
Advanced Mode
->Options
->Actions
->Restore folder structure
Com isso todos os seus arquivos serão recuperados mantendo a estrutura de pastas, então será muito mais fácil para apenas arrastar e soltar essa pasta no caminho de onde foi excluída.
Aviso! Assim que você perder (excluir acidentalmente) qualquer arquivo, tente não tocar (adicionar / editar arquivos) a unidade de onde foi excluído para aumentar a possibilidade de recuperação bem-sucedida. Caso contrário, você pode perder completamente esse arquivo.
Por que funciona: quando você exclui um arquivo, na verdade ele não é excluído. Ele está apenas marcado como "excluído", então da próxima vez que você adicionar / atualizar arquivos na mesma unidade, esses arquivos antigos serão substituídos pelos novos. Mas, até que sejam sobrescritos, ainda é possível ler (e, claro, recuperar) os arquivos.
fonte
Se você estiver usando git com o MSBuild, criei um destino que copia todos os arquivos e depois o faz
git clean -xdf
. Dessa forma, você pode restaurar facilmente o arquivo se perceber que excluiu algo que não queria excluir. Dê uma olhada aqui: http://blog.3d-logic.com/2012/11/04/safe-git-clean-with-msbuild/fonte
Fiz com um código que deveria adicionar ao meu repositório e limpei com -dfx para poder restaurar os arquivos.
Eu tentei usar debugfs, olhar e linkar de inodes, testdisk e muitas outras ferramentas que aparecem e nenhuma encontrou o diretório que este estúpido escrevendo apagou por acidente.
Baixe extundelete do sourceforge.
Você provavelmente precisará instalar o pacote e2fslibs-dev
Executar
Ele irá gerar o binário para extundelete dentro da pasta src. No meu caso, eu apaguei erroneamente uma pasta. vamos chamá-lo de FOOBAR
Eu apenas corri:
e criou uma pasta chamada RESTORED_FOLDERS
fonte
Se você estiver usando um mac e fez backup com um
Time Machine
, você pode restaurarfonte
Felizmente, cometi esse erro ao usar o Windows 7. Fui para a lixeira, destaquei todos os arquivos excluídos e cliquei em "Restaurar". Feito.
fonte
git clean
não move os arquivos para a lixeira.Se você não enviou suas alterações (git push), você também pode trazer de volta as informações do seu servidor que ainda não foram atualizadas. Usei o filezilla para trazer de volta os arquivos que excluí e copiei-os em meus arquivos locais. Não é a melhor maneira de fazer isso, mas funciona e evita usar o console
fonte