Команда 
git rebase -i HEAD~3 откроет интерактивный редактор rebase, который позволит вам переписать последние 3 коммита в текущей ветке.  По умолчанию, редактор предложит следующий список коммитов, отсортированных от старого к новому (снизу вверх в файле):
  
    
pick [SHA1 коммита 1] [Сообщение коммита 1]
pick [SHA1 коммита 2] [Сообщение коммита 2]
pick [SHA1 коммита 3] [Сообщение коммита 3]
# Rebase [SHA_родитель_коммита_1]..[SHA_коммита_3] onto [SHA_родитель_коммита_1]
#
# Commands:
# p, pick = use commit
# r, reword = use commit, but edit the commit message
# e, edit = use commit, but stop for amending
# s, squash = use commit, but meld into previous commit
# f, fixup = like squash, but discard this commit's log message
# x, exec = run command (the rest of the line) using shell
# d, drop = remove commit
#
# These lines can be re-ordered; they are executed from top to bottom.
#
# If you remove a line here THAT COMMIT WILL BE LOST.
#
#       However, if you remove everything, you'll abort the rebase.
#
# Note that empty commits are commented out
    
  
  Применив указанный вами сценарий (pick → squash → reword), файл будет изменен следующим образом:
  
    
pick [SHA1 коммита 1] [Сообщение коммита 1]
squash [SHA1 коммита 2] [Сообщение коммита 2]
reword [SHA1 коммита 3] [Сообщение коммита 3]
    
  
  Что произойдет после сохранения и закрытия файла:
  
    - 
      Коммит 1 будет применен без изменений (pick).
- 
      Коммит 2 будет объединен с коммитом 1 (squash).  Git откроет редактор для объединения сообщений этих двух коммитов.
- 
      Коммит 3 будет применен, но Git откроет редактор для изменения сообщения коммита (reword).
Результат:
  *   В истории будет только 2 коммита вместо 3.
  *   Первый коммит (изначально коммит 1) будет содержать изменения как изначального коммита 1, так и изначального коммита 2, а его сообщение будет результатом объединения сообщений коммитов 1 и 2.
  *   Второй коммит (изначально коммит 3) будет содержать изменения изначального коммита 3, но с отредактированным сообщением коммита.
  
Важно помнить:
  *   Интерактивный rebase изменяет историю коммитов.  Не используйте его на публичных ветках, чтобы избежать проблем у других разработчиков.
  *   При конфликтах во время rebase, вам потребуется их разрешить и выполнить 
git add ., а затем 
git rebase --continue.
  *   Если вы хотите отменить rebase, используйте 
git rebase --abort.