Вы могли бы:
- git clone <your github repo>
- git reset --hard <an_older_commit> (where you didn't have those huge files)
- git push --force origin master
Таким образом:
- Ваше первоначальное локальное репо не затронуто (и вы можете исправить это, чтобы не толкать эти файлы снова)
- ваше удаленное хранилище (GitHub) больше не видит те коммиты с огромными файлами в нем.
- GitHub будет периодически запускать
git gc
на своей стороне, полностью очищая файлы, на которые нет ссылок.
Однако OP Martin упоминает:
как мне сделать reset --hard
на позицию перед первым коммитом?
то есть я бы хотел, чтобы репо было пустым, чтобы не откатываться до предыдущего коммита
В этом случае создайте новый локальный репо, сделайте первый небольшой коммит и push --force
, который совершит коммит.
В более общем смысле, я всегда стараюсь иметь первый маленький начальный коммит в основной ветке при создании репо, чтобы иметь возможность вернуться к минимальному коммиту или запустить новую ветку (для несвязанного усилия по разработке) из указанного минимального коммита.