Как в Git объединить два коммита в один?
Слияние, rebase и конфликты
Несколько последних коммитов объединяют в один через интерактивный rebase или soft reset.
Интерактивный rebase
git rebase -i HEAD~2В открывшемся списке у второго коммита меняем pick на squash (или fixup, чтобы не сохранять его сообщение), сохраняем и редактируем итоговое сообщение.
Через soft reset
git reset --soft HEAD~2
git commit -m "Форма логина с валидацией"--soft убирает коммиты, но оставляет изменения проиндексированными, и их можно закоммитить заново одним коммитом.
При слиянии PR
На GitHub и GitLab есть кнопка Squash and merge — вся ветка превращается в один коммит в основной ветке.
Нюансы
Это переписывание истории: если коммиты уже запушены, понадобится git push --force-with-lease, а для общих веток так делать нельзя.
Коротко для собеседования
git rebase -i HEAD~N и squash, либо git reset --soft HEAD~N и новый коммит; для запушенных веток — только с force-with-lease и осторожно.
Подробнее: Pro Git — перезапись истории