Удаление ненужных файлов из истории, включая все ссылки с помощью filter-branch

Недавно я клонировал SVN-репозиторий, в котором раньше было несколько двоичных файлов, которые больше не нужны. К сожалению, я уже отправил его в Github с включенными двоичными файлами. Теперь я хочу удалить их, используя 'git filter-branch', но я сталкиваюсь с некоторыми проблемами, когда речь идет о тегах и ветвях.

По сути, я создал простой сценарий оболочки для удаления списка файлов, которые были определены с помощью следующей команды:

git rev-list --objects --all | grep .jar > files.txt

Скрипт для удаления выглядит следующим образом:

#!/bin/sh
while read file_hash file_to_remove
do
    echo "Removing "$file_to_remove;
    git filter-branch --index-filter "git rm --cached --ignore-unmatch $file_to_remove"
    rm -rf .git/refs/original/;
    git reflog expire --all --expire-unreachable=0;
    git repack -A -d;
    git prune
done < $1

У меня есть несколько тегов (все они перечислены в .git / pack-refs), один .git / refs / remotes / origin (указывающий на репозиторий Github). Удаление файлов с использованием вышеуказанного сценария не дает желаемого эффекта («du -cm» остается для вывода того же размера; «git rev-list» по-прежнему перечисляет файлы), пока я вручную не удаляю все ссылки из .git / pack -refs и каталог .git / refs / remotes / origin.

Естественно, я теряю все теги, а также возможность перенести мои локальные изменения обратно в Github с этим подходом. Есть ли что-то, что я пропустил или есть альтернативный способ удаления файлов из всех веток / тегов, не разрушая мою историю?

Большое спасибо заранее, Маттес