(решено, см. нижнюю часть вопроса) 
Глядя на это в течение долгого времени, то, что у меня есть до сих пор:
- http://dound.com/2009/04/git-forever-remove-files-or-folders-from-history/ и
- http://progit.org/book/ch9-7.html
Практически тот же метод, но оба они оставляют объекты в файлах пакетов... Застрял. 
Что я пробовал:
git filter-branch --index-filter 'git rm --cached --ignore-unmatch file_name'
rm -Rf .git/refs/original
rm -Rf .git/logs/
git gc
Все еще есть файлы в пакете, и вот как я это знаю:
git verify-pack -v .git/objects/pack/pack-3f8c0...bb.idx | sort -k 3 -n | tail -3
И это:
git filter-branch --index-filter "git rm -rf --cached --ignore-unmatch file_name" HEAD
rm -rf .git/refs/original/ && git reflog expire --all &&  git gc --aggressive --prune
То же самое...
Пробовал трюк git clone, он удалил некоторые из файлов (~ 3000 из них), но самые большие файлы все еще там...
У меня есть несколько старых файлов в репозитории, ~ 200M, и я действительно не хочу их там... И я не хочу, чтобы reset хранилище 0: (
РЕШЕНИЕ: Это самый короткий способ избавиться от файлов:
-  check.git/packed-refs - моя проблема заключалась в том, что у меня была строка refs/remotes/origin/masterдля удаленного репозитория, удалить ее, иначе git не удалит эти файлы
-  (необязательно) git verify-pack -v .git/objects/pack/#{pack-name}.idx | sort -k 3 -n | tail -5- для проверки самых больших файлов
-  (необязательно) git rev-list --objects --all | grep a0d770a97ff0fac0be1d777b32cc67fe69eb9a98- проверить, что это за файлы
-  git filter-branch --index-filter 'git rm --cached --ignore-unmatch file_names'- удалить файл из всех версий
-  rm -rf .git/refs/original/- удалить git backup
-  git reflog expire --all --expire='0 days'- для истечения всех свободных объектов
-  git fsck --full --unreachable- чтобы проверить, есть ли свободные объекты
-  git repack -A -d- переупаковка
-  git prune- для окончательного удаления этих объектов
