Ответ
Для объединения нескольких последних коммитов в один используется интерактивный ребейз (git rebase -i).
Пошаговая инструкция:
- Запустите интерактивный ребейз для последних N коммитов (например, 10):
git rebase -i HEAD~10 - В открывшемся редакторе вы увидите список коммитов. Оставьте первый коммит с ключевым словом
pick, а для всех остальных, которые нужно объединить, заменитеpickнаsquashилиs.pick a1b2c3d Начальный коммит squash e4f5g6h Второй коммит squash i7j8k9l Третий коммит # ... и так далее - Сохраните файл и закройте редактор.
- Git откроет новое окно для редактирования итогового сообщения коммита. Здесь можно оставить одно сообщение, объединив или переписав историю из всех сквошенных коммитов.
- Сохраните и закройте — коммиты будут объединены.
Альтернативный способ — git merge --squash:
Если вы хотите объединить все коммиты из ветки feature в один коммит при мерже в main:
git checkout main
git merge --squash feature
git commit -m "Объединённый коммит из ветки feature"
Важно: Ребейз переписывает историю. Не используйте его для коммитов, которые уже были отправлены в общий репозиторий.