Postępowałem zgodnie z instrukcjami dotyczącymi tworzenia stron github i zapomniałem przejść do mojego podkatalogu git. W rezultacie właśnie nukowałem cały katalog dokumentów za pomocą git clean -fdx
.
Czy jest jakiś sposób, żebym mógł naprawić ten straszny błąd?
119
git clean -fdx
bez żadnego ostrzeżenia, że operacja jest tak niebezpieczna. Zastanawiam się, ile osób nieodwołalnie zniszczyło swoje pliki tą pozornie niewinną sugestią.git clean
połączeń. Spróbuj też wyrwać się z nawyku sprzątania bez sprawdzania. Utwórz skrypt Powershell lub Bash, który można wywołać, który będzie uruchamianygit clean -fdxn
z monitem o potwierdzenie, zanim faktycznie uruchomisz niezwykle destrukcyjne czyszczenie.Odpowiedzi:
Nie. Te pliki zniknęły.
(Właśnie sprawdzone w systemie Linux: git clean wywołuje
unlink()
i nie tworzy wcześniej kopii zapasowej).źródło
git clean
przypadkowo usunął zmiany z półki w.idea
ukrytym folderze, a historia lokalna mnie uratowała!Wykona próbny przebieg i pokaże, jakie pliki zostałyby usunięte, gdybyś uruchomił
(oczywiście jest to pomocne tylko wtedy, gdy wiesz o tym z wyprzedzeniem, ale na następny raz)
źródło
-n
działa na większości poleceń git (i wielu innych poleceń * nix).IntelliJ / Android Studio umożliwia przywracanie plików z historii lokalnej .
źródło
Nie. "Git clean -fdx" usunie wszystkie pliki i katalogi, których git nie śledzi z twojego katalogu roboczego. Ponieważ Git nie śledzi tych plików, nie będzie miał żadnych kopii zapasowych tych plików. Przynajmniej nie zwykle.
Jeśli wykonałeś „git add” na jednym z tych plików stosunkowo niedawno (ale przerwałeś zatwierdzanie), istnieje szansa, że możesz go znaleźć za pomocą „git fsck --lost-found”. Warto spróbować, ale nie rób zbyt wielkich nadziei.
W przyszłości powinieneś raczej rozważyć popełnienie kilku razy za często niż kilka razy za rzadko. W ten sposób będziesz mieć przynajmniej lokalną kopię zapasową, nawet jeśli nie skończysz wypychać tych zatwierdzeń do pilota.
źródło
mkdir
jego wykonaniuJak wspomniał @kusma powyżej, jeśli masz szczęście (jeśli kiedykolwiek zrobiłeś "git add"), możesz użyć następującego polecenia, aby wyodrębnić cały obiekt:
W ten sposób będzie szukał wszystkich typów fragmentów, zbierał całe różnice i dodawał do pliku, w którym można wyodrębnić utracony plik. W moim przypadku straciłem całą klasę Java.
źródło
Jeśli używasz dowolnego IDE Jetbrains, istnieje opcja, aby zobaczyć lokalną historię pliku. Jeśli już to zrobiłeś
git clean
, możesz ponownie utworzyć plik i sprawdzić lokalną historię pliku i przywrócić go z tego miejsca.Pracował dla mnie dla jednego pliku. W przypadku pełnego katalogu nie mam pojęcia, jak to zrobić.
źródło
Miałem dzisiaj ten problem.
Jak powiedzieli inni, git nie przechowuje plików.
Jedynym sposobem na cofnięcie tego jest użycie narzędzia przywracającego. Użyłem "extundelete" i odzyskałem wszystko, ale twój przebieg / system plików może się różnić.
źródło
Jeśli pracujesz nad Eclipse, jednym z możliwych rozwiązań jest przywrócenie z lokalnej historii Eclipse.
źródło
Właściwie tak ! To jest możliwe! Ale bez używania poleceń git.
Potrzebujemy tylko narzędzia do odzyskiwania plików, takiego jak Recuva .
Wystarczy wspomnieć o ścieżce, z której został usunięty, i pozwolić mu odzyskać pliki.
Oto kilka przydatnych uwag dotyczących korzystania z tej aplikacji:
Advanced Mode
->Options
->Actions
->Restore folder structure
Dzięki temu wszystkie pliki zostaną odzyskane, zachowując strukturę folderów, więc będzie to znacznie łatwiejsze po prostu przeciągnij i upuść ten folder do ścieżki, z której został usunięty.
Ostrzeżenie!Gdy tylko utracisz (przypadkowo usuniesz) dowolny plik, staraj się nie dotykać (dodawać / edytować plików) dysku, z którego został usunięty, aby zwiększyć możliwość pomyślnego odzyskania. W przeciwnym razie możesz całkowicie stracić ten plik.
Dlaczego to działa: kiedy usuwasz plik, w rzeczywistości nie jest on usuwany. Jest po prostu oznaczony jako „usunięty”, więc następnym razem, gdy dodasz / zaktualizujesz pliki na tym samym dysku, te stare pliki zostaną nadpisane nowymi. Ale dopóki nie zostaną nadpisane, nadal można je odczytać (i oczywiście odzyskać).
źródło
Zrobiłem z kodem, który miałem dodać do mojego repozytorium i wyczyściłem za pomocą -dfx, mogłem przywrócić pliki.
Próbowałem użyć debugfs, look i link z i-węzłów, testdisk i wielu innych narzędzi, które się pojawiają, ale żadne nie znalazło katalogu, który ten głupi pisarz usunął przez przypadek.
Pobierz extundelete z sourceforge.
Prawdopodobnie będziesz musiał zainstalować pakiet e2fslibs-dev
Run
Wygeneruje plik binarny dla extundelete w folderze src W moim przypadku błędnie usunąłem folder. nazwijmy to FOOBAR
Właśnie pobiegłem:
i utworzył folder o nazwie RESTORED_FOLDERS
źródło
Jeśli używasz git z MSBuild, utworzyłem cel, który kopiuje wszystkie pliki, a następnie robi
git clean -xdf
. W ten sposób możesz łatwo przywrócić plik, jeśli zdasz sobie sprawę, że usunąłeś coś, czego nie chciałeś usunąć. Zajrzyj tutaj: http://blog.3d-logic.com/2012/11/04/safe-git-clean-with-msbuild/źródło
Jeśli używasz komputera Mac i utworzono kopię zapasową za pomocą pliku
Time Machine
, możesz przywrócićźródło
Na szczęście popełniłem ten błąd podczas korzystania z Windows 7. Poszedłem do kosza, podświetliłem wszystkie usunięte pliki i kliknąłem „Przywróć”. Gotowe.
źródło
git clean
nie przenosi plików do kosza.Jeśli nie wypchnąłeś swoich zmian (git push), możesz również przywrócić informacje z serwera, które nie zostały jeszcze zaktualizowane. Użyłem filezilla, aby przywrócić pliki, które usunąłem, i skopiowałem je do moich plików lokalnych. Nie jest to najlepszy sposób, ale działa i unika używania konsoli
źródło