Jak odzyskać pliki usunięte przez git rm oraz niezcommitowany submoduł w VSCode
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:
- Nacisnąć Ctrl/CMD + Shift + P
- Wybrać
Local History: Find Entry To Restore - Przefiltrować wyniki, np. po nazwie folderu
- Otworzyć plik
- 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.