git rebase -i
В открывшемся редакторе на все коммиты кроме одного ставите s (squash) и они все объединятся в один.
А вообще забудьте про переписывание истории. Все что было сделано в таком же виде и должно оставаться. Красота дерева коммитов никому не несет никакой пользы, а вот blame на нужной строяке после переписывания вами истории уже будет указывать не на реальный коммит в котором была сделана правка, а на коммит в котором вы переписали историю. Rebase злая штука. Merge наше всё. А главное просто и понятно.