Как объединить последний коммит и одним из предыдущих не трогая остальные?
Попробовал git rebase -i HEAD~5
но если в открывшемся списке напротив "коммит 4" ставлю флаг "s"
то у меня объединяются почему-то "фикс 4-го коммита" и "коммит 1" 
нужно перенести строчку "фикс 4-го коммита" после строчки "коммит 4". squash объединяет коммит на котором он стоит с предыдущим в этом списке.
*Поправил ответ*
Вам нужно сделать следующее:
1. git commit --amend -m "fixup! фикс 4-го коммита"
То есть необходимо поменять сообщение для коммита и указать ключевое слово "fixup!" в начале сообщения к коммиту, чтобы git понял, что данный коммит является фиксирующим
2. git rebase -i --autosquash HEAD~3
далее запускаем autosquash после чего выходим из диалогового окна и если конфликтов не будет, то изменения применятся и то что было в коммите "фикс 4-го коммита" перенесется в "коммит 4"

P.s. учитывайте, что в процессе могу появиться конфликты которые нужно решить чтобы продолжить.