У меня была именно эта проблема, но все стандартные решения, основанные на git filter-branch, были очень медленными. Если у вас есть небольшой репозиторий, это может быть не проблема, это было для меня. Я написал еще одну программу фильтрации git на основе libgit2, которая в качестве первого шага создает ветви для каждой фильтрации первичного репозитория, а затем выталкивает их для очистки репозиториев в качестве следующего шага. В моем хранилище (500 Мб 100000 коммитов) стандартные методы фильтрации фильтров git занимали дни. Моя программа занимает несколько минут, чтобы выполнить ту же фильтрацию.
У этого сказочного имени git_filter и живет здесь:
https://github.com/slobobaby/git_filter
на GitHub.
Надеюсь, это кому-то полезно.