Вот команда, которая удалит поврежденную строку из истории файла во всех ваших ветках:
git filter-branch --tree-filter 'sed -i "/sensitive information/ d" filename' -- --all
Это проверяет каждую ревизию, запускает для нее команду sed
, а затем фиксирует эту ревизию обратно.
Команда sed
в этом случае сопоставляет любые строки, содержащие шаблон sensitive information
в файле с именем filename
, и удаляет эти строки.
Примечание: хорошо, если у вас есть резервная копия, и сначала попробуйте самостоятельно выполнить сценарий sed
, чтобы убедиться, что он выполняет то, что вам нужно, потому что для запуска длинной истории может потребоваться довольно много времени.