¿Cómo sustituir texto de archivos en el historial de git?

Siempre he usado un cliente git basado en interfaz (smartGit) y, por lo tanto, no tengo mucha experiencia con la consola git.

Sin embargo, ahora enfrento la necesidad de sustituir una cadena en todos los archivos .txt del historial (por lo tanto, no borrar todo el archivo sino simplemente sustituir una cadena). Encontré el siguiente comando:

git filter-branch --tree-filter 'git ls-files -z "*.php" |xargs -0 perl -p -i -e "s#(PASSWORD1|PASSWORD2|PASSWORD3)#xXxXxXxXxXx#g"' -- --all

Intenté esto, y desafortunadamente noté que si bien la contraseña se cambió, todos los archivos binarios se corrompieron. Las imágenes, etc., estarían dañadas.

¿Hay una mejor manera de hacer esto que no corrompa mis archivos binarios?

Gracias.

EDITAR:

Me mezclé con algo. El código real que causó que los archivos binarios se corrompieran fue:

$ git filter-branch --tree-filter "find . -type f -exec sed -i -e 's/originalpassword/newpassword/g' {} \;"

El código en la parte superior en realidadremoto Todos los archivos con mi contraseña son bastante extraños.

Respuestas a la pregunta(4)

Su respuesta a la pregunta