Недавно понадобилось объединить несколько коммитов в один в одном из проектов.
Эта операция называется squash (сплющивание).
Сделать это оказалось довольно легко:
- открываем консоль git (любым из способов) и делаем rebase до нужного коммита (если у нас был старый, принятый коммит и мы хотим все коммиты после него соединить в один, то пишем его SHA хеш):
git rebase -i тут_sha_хеш_коммита
- После чего у нас открывается окошко редактора Vim, в котором нужно заменить все вхождения pick на squash (!)кроме самого первого(отсчет сверху)(!). Для редактирования нужно нажать кнопку Insert, после редактирования нажать 2 раза Esc, и написать :wq (это сохранит и закроет текущий файл).
- После предыдущей операции придется немного подождать.
- Делаем git push -f (обязательно с -f, иначе git будет ругаться)
Собственно и все, теперь наши коммиты объединены в один.