我一直使用基于接口的 git 客户端(smartGit),因此对 git 控制台没有太多经验。
但是,我现在需要在历史记录中的所有 .txt 文件中替换一个字符串(因此,不是擦除整个文件,而只是替换一个字符串)。我找到了以下命令:
git filter-branch --tree-filter 'git ls-files -z "*.php" |xargs -0 perl -p -i -e "s#(PASSWORD1|PASSWORD2|PASSWORD3)#xXxXxXxXxXx#g"' -- --all
我试过这个,不幸的是注意到虽然密码确实被改变了,但所有的二进制文件都被破坏了。图像等都会被破坏。
有没有更好的方法来做到这一点,不会损坏我的二进制文件?
谢谢。
编辑:
我和某事混在一起了。导致二进制文件损坏的实际代码是:
$ git filter-branch --tree-filter "find . -type f -exec sed -i -e 's/originalpassword/newpassword/g' {} \;"
奇怪的是,顶部的代码实际上用我的密码删除了所有文件。