Обычно несколько локальных коммитов объединяют в один через интерактивный git rebase -i, помечая лишние коммиты как squash или fixup. В результате получается один итоговый коммит, который уже и отправляют на сервер. Если история ветки уже была запушена, изменения пересылают аккуратно с помощью git push --force-with-lease.
Классический способ объединить несколько последних коммитов в один перед push — использовать интерактивный git rebase -i. Он позволяет переписать историю ветки так, как будто вы сделали один аккуратный коммит вместо серии черновых.
Общий алгоритм через git rebase -i:
git rebase -i HEAD~3.pick, а для остальных замените pick на squash (или fixup).git log --oneline и выполните git push, при переписанной уже опубликованной истории — git push --force-with-lease.Важно помнить, что переписывать историю (rebase, squash) безопасно только для локальных коммитов, которые никто ещё не забрал. Если вы уже пушили эти коммиты в общий репозиторий, нужно предупредить команду и использовать форс-пуш аккуратно, чтобы не затереть чужие изменения.
Есть и более прямолинейный способ — через git reset --soft, когда вы уверены, что нужно просто собрать последние N коммитов в один и вас устраивает сумма их изменений.
Отметьте свой прогресс