Git - usuwanie pliku z repozytorium

Każdemu się zdarza...


Komu nie zdarzyło się chociaż raz przez pomyłkę / nieuwagę / niewiedzę wrzucić wrażliwy plik do repozytorium? Jeśli tobie, to zazdroszczę. Jednak nie wszystko stracone! Można się go pozbyć.

BFG Repo-Cleaner

Z pomocą przychodzi BFG! Pobieramy go z oficjalnej strony i kilkoma poleceniami pozbędziemy się niechcianego pliku z repozytorium Git-a:

Zakładam, że pobrany plik jest na pulpicie. Otwieramy konsolę i przechodzimy na pulpit:

cd Desktop

Następnie musimy sklonować nasze repozytorium:

git clone --mirror https://github.com/Nazwa-użytkownika/nazwa-repozytorium

Jeśli używasz GitHub Desktop - dodaj ścieżkę do cmd git-a do zmiennej systemowej Path, aby móc korzystać z gita także w terminalu. Powinna wyglądać mniej więcej tak: C:\Users\Nazwa-użytkownika\AppData\Local\GitHub\PortableGit_(id)\cmd. Zmienne systemowe znajdziesz w Panel sterowania -> System i zabezpieczenia -> System -> Zaawansowane ustawienia systemu -> Zmienne środowiskowe -> Zmienne Systemowe. Pamiętaj o średniku przed wklejeniem ścieżki.

Jak pewnie zauważyłeś, jest to plik jar, więc do jego uruchomienia będzie potrzebna nam Java.

Jeśli nie masz Javy, zaopatrz się w nią! Jeśli nie chcesz za każdym razem podawać pełnej ścieżki (domyślnie: C:\WINDOWS\system32;C:\WINDOWS;C:\Program Files\Java\jdk1.7.0\bin) do plików wykonywalnych Javy, dodaj ją również do [Path](https://www.java.com/pl/download/help/path.xml).

Uruchamiamy go z flagą –delete-files oraz nazwą pliku(nie ścieżka)

java -jar bfg-wersja.jar --delete-files nazwa-pliku.x

Następnie przechodzimy do sklonowanego repozytorium

cd nazwa-repozytorium.git

I uruchamiamy komendę:

git reflog expire --expire=now --all && git gc --prune=now --aggressive

Gdy nie było po drodze żadnych błędów i jesteśmy zadowoleni z wyniku, możemy pushować ;)

git push

Polub stronę bloga na Facebooku. Wrzucam tam informację o nowych wpisach: