SobesLab логотип SobesLab

Ответ

Есть несколько способов "сквошить" коммиты. Один вариант — интерактивный rebase: например, если нужно объединить последние 3 коммита, выполняем git rebase -i HEAD~3, в открывшемся списке помечаем второй и третий коммит как "squash" (или сокращённо "s") вместо "pick". Это приведёт к тому, что эти коммиты будут объединены с первым. Затем можно отредактировать итоговое сообщение коммита. После сохранения получим один коммит, включающий изменения всех трёх. Второй способ — git reset: перейти на коммит перед нужной серией (git reset --soft HEAD~3), это оставит изменения последних 3 коммитов в индексе (staged), затем сделать один git commit — объединённый. Однако reset меняет историю сразу (осторожно, если коммиты были пушены). Предпочтительный метод — интерактивный rebase, так как он более явный и позволяет сохранить желаемое сообщение. Стоит помнить, что squash меняет историю (новый коммит вместо нескольких старых), поэтому после него может понадобиться force-push, если изменения уже опубликованы.