¿Cómo puedo eliminar un file de git usando filter-branch, de modo que todavía no puedo convertir los contenidos?

He estado tratando muy duro de eliminar un file con datos confidenciales de mi repository de git usando esta excelente página (entre otras): http://help.github.com/removing-sensitive-data/

la línea principal es:

git filter-branch --index-filter 'git rm --cached \ --ignore-unmatch FileWithSecrets.java' HEAD 

Sin embargo, incluso cuando sigo las instrucciones, incluida la poda y la recolección de basura de objects, el hecho de que haya reescrito el historial no parece eliminar completamente el file.

El punto es que todavía puedo encontrar el contenido del file usando git grep: git grep $ (git rev-list –all)

…. y todavía aparece.

¿Me estoy perdiendo algo obvio o no obvio? ¿Por qué aún puedo "gp grep" los contenidos?

Veo que el file ya no está en el set de cambios cuando hago un "show git" de la confirmación donde se agregó. Pero aún así todavía puedo grep – como ha sido eliminado de la historia de la sucursal, pero todavía flota por ahí?

Git es divertido, genial y sorprendente, pero realmente puede sacudirse la confianza en uno mismo 🙂

¡¡Gracias!! Brendan

No probé esto, pero dado que el último argumento para git filter-branch se define como [--] [<rev-list options>...] y está obteniendo la información confidencial de las revoluciones en git rev-list --all , esto debería funcionar:

 git filter-branch --index-filter 'git rm --cached \ --ignore-unmatch FileWithSecrets.java' -- --all ^^^^^^^^