Я всегда использовал клиентский интерфейс 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
Я попробовал это и, к сожалению, заметил, что, хотя пароль и изменился, все двоичные файлы были повреждены. Изображения и т.д. Будут повреждены.
Есть ли лучший способ сделать это, что не повредит мои двоичные файлы?
Спасибо.
EDIT:
Я что-то перепутал. Фактический код, из-за которого повреждены двоичные файлы, был:
$ git filter-branch --tree-filter "find . -type f -exec sed -i -e 's/originalpassword/newpassword/g' {} \;"
Код наверху действительно удалил все файлы с моим паролем странно.