Por que você quer fazer isso? Mashing up the commits acaba de se livrar da história.
Se você realmente quiser fazer isso, eu vou para "git rebase -i" (rebase interativa), que permite que você vá reescrever o histórico (reordenando os commits, esmagando-os, apagando alguns, ... ). A divisão de commits pode ser feita, mas é um pouco complicado.
Eu gostaria de:
git branch save # não quer perder o original acidentalmente ...
git rebase -i HEAD ~ 20 # para os últimos 20 commits
# Edite o modelo oferecido à vontade, ajuda mínima incluída
# Saindo do editor faz o git do como foi dito, ele pode parar se a intervenção manual for necessária