Comment remplacer le texte à partir de fichiers dans l'historique de git?

J'ai toujours utilisé une interface à base de git client (smartGit) et donc n'ont pas beaucoup d'expérience avec le git de la console.

Cependant, je vais maintenant faire face à la nécessité de remplacer une chaîne de caractères dans tous .les fichiers txt de l'histoire (donc, pas d'effacer le fichier en entier, mais seulement de la substitution d'une chaîne de caractères). J'ai trouvé la commande suivante:

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

J'ai essayé, et malheureusement remarqué que, bien que le mot de passe ne se changé, tous les fichiers ont été corrompus. Images, etc. seraient tous des corrompus.

Est-il une meilleure façon de le faire que de ne pas corrompre mes fichiers binaires?

Grâce.

EDIT:

Je me suis mélangé avec quelque chose. Le code qui a causé des fichiers binaires pour obtenir corrompu était:

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

Le code en haut en fait retiré tous les fichiers avec mon mot de passe, assez étrangement.

  • Ne résout pas votre problème, mais c'est semblable à une question, j'ai demandé un temps de retour: stackoverflow.com/questions/2225454/...
  • En effet, il y a beaucoup de réponses sur la façon de supprimer des fichiers. J'ai besoin de remplacer une chaîne de caractères si.
  • Cuadra, veuillez voir mon montage, j'ai utilisé un script différent, mêlé. Peut-être qu'il vous aide à obtenir le bon de commande.
InformationsquelleAutor Tom | 2010-11-05