Usuwanie wrażliwego pliku z repozytorium
Jakiś czas temu, dokładniej kilka miesięcy wstecz, tworząc projekt – dodałem sobie niechciany plik do commita. Był to sam plik application.properties
. Pech chciał że w owych propertisach znajdował sie mój adres email razem z hasłem (sic!). Był potrzebny do wysyłania maili z poziomu aplikacji (przez smtp googla). Nie zauważyłem tego od razu tylko dopiero po jakimś czasie. Usunąłem więc plik z Githuba i wróciłem do pracy. Niedawno zauważyłem, że może i pliku nie ma jako takiego ale to przecież Git (system do zarządzania zmianami) więc właściwości pliku nadal znajdują się na githubie (dokładniej w historii commitów). Wziąłem się więc za szukanie rozwiązania i znalazłem w dokumentacji githuba: https://docs.github.com/en/github/authenticating-to-github/removing-sensitive-data-from-a-repository. Ja zrobiłem to tak:
- pobrałem .jar programu bfg-repo-cleaner
- dla ułatwienia przeniosłem sobie go folderu projektu
- musiałem jeszcze dodać zmienne środowiskowe dla javy (laptop był po gruntownym restarcie więc ich nie było)
- uruchomiłem program z flagą
--delete-files
i voila!
java -jar bfg-1.13.2.jar --delete-files application.properties
Następnie należało jeszcze wykonać git push --force
w katalogu projektu aby git przesłał zmiany do githuba.
Jak widać program znalazł 26 commitów w których była jakaś wzmianka na temat pliku:

Oczywiście sam program posiada wiele innych możliwości czyszczenia jak np. usuwanie plików z daną nazwą, usuwanie plików większych niż dany rozmiar, zamiana linii na inny tekst (w pliku). Tak więc mogłem po prostu zamienić frazy ze słowem email i password z application.properties zamiast usuwać cały plik ze zdalnego repozytorium. Po więcej odsyłam do dokumentacji projektu: