Jak odzyskać pliki usunięte przez git rm oraz niezcommitowany submoduł w VSCode

by

W ostatni weekend przydarzyła mi się dziwna sytuacja. Wszystko zaczęło się, gdy zauważyłem na GitLabie, że jeden z moich folderów w repozytorium jest tak naprawdę submodulem. Było już późno, więc wszedłem na Stack Overflow, żeby znaleźć wątek dotyczący odłączania modułu od repozytorium :)

Przywracanie plików usuniętych przez git rm za pomocą VSCode

Po skopiowaniu kilku komend spojrzałem na to, co zrobiłem i pomyślałem „o mój Boże” – usunąłem cały folder bez commitowania jakichkolwiek zmian. Co gorsza, dowiedziałem się, że podczas wymuszonego odłączania submodułu Git używa komendy rm -rf. Więc co teraz? Próbowałem szukać opcji w Gicie, ale uświadomiłem sobie, że żaden reset nie pomoże, bo te pliki po prostu nie istnieją w moim repo – to był tylko submodule z lokalnymi niezatwierdzonymi zmianami. Mógłbym opisywać wszystkie metody, które próbowałem, ale przejdźmy do sedna – uratował mnie VS Code Local History.

VS Code Local History

Okazuje się, że praktycznie każdy plik, który edytujesz, ma w VSCode własną lokalną historię, która śledzi zdarzenia zapisywania pliku. Przywrócenie pliku jest naprawdę proste, wystarczy:

  1. Nacisnąć Ctrl/CMD + Shift + P
  2. Wybrać Local History: Find Entry To Restore
  3. Przefiltrować wyniki, np. po nazwie folderu
  4. Otworzyć plik
  5. Kliknąć ikonę haczyka, by go przywrócić

Plik po pliku, właśnie w ten sposób udało mi się odzyskać całą skasowaną zawartość!

P.S. Nie robiłem tego tekstu zbyt długiego, bo jeśli jesteś w podobnej sytuacji, prawdopodobnie szukasz rozwiązania jak najszybciej i googlujesz ‘recover git rm files’ albo przeglądasz stack overflow. Bez obaw – VS Code Cię uratuje.

Ready to start?

Let's talk about your project.

Free consultation and quote within 48h. No strings attached.

Contact us