как очистить историю гит репозитория?

1) клонируете репу https://gist.github.com/a3d2efe2ce6ca48825ce.git - это bash скрипт позволит вам очистить (выпилить) папку/файла из всей истории(всех комитов) , в крайнем случае можно оставить для последнего релиза. (git_cleanup [-x/--expunge -l/--keeplatest ...])
2) Клонируете свою репу с ключом --mirror

git clone --mirror git@github.com:<user/repo.git>

3)

bash git_cleanup <repo> -x upload/

4) после того как скрипт найдет все копии и удалит нужно выполнить команды:

cd repo.git
git reflog expire --expire=now --all
git gc --prune=now --aggressive

, чтобы закрепить изменения
5) после эти изменений у репы измениться remote url, поэтому перед пулом выполните :

git remote set-url origin git://new.url.here
git push

Альтернативный вариант :
http://rtyley.github.io/bfg-repo-cleaner