Задача

Мы хотим очистить историю коммитов в гит репозитории, так чтобы все изменения остались в соответствии с текущей историей коммитов.

Шаг 1 - ищем айди первого коммита

git log --oneline 

Эта команда покажет историю изменений. На нам надо перейти в самый низ, для чего нажимаем G. Копируем хэш последнего коммита

Шаг 2 - откатываемся до 1 коммита

git reset --soft <commit-hash>

Шаг 3 - Вносим все изменения из индекса в историю

После предыдущего шага у нас остались все изменения, сделанные ранее. Теперь нам нужно эти изменения закоммитить в гит, я обычно делаю это одним большим коммитом. Это можно сделать, например, так:

git commit -am "Cleanded up old commits history"

Флаг -a добавит в коммит все измененные файлы из индекса.

Шаг 4 - перетираем историю удаленного репозитория

Для этого нужно добавить флаг --force в команде git push:

git push --force