intermediate
Rebase
Воспроизводите коммиты на новой базе для линейной истории, понимая переписанные идентичности коммитов.
Rebase воспроизводит коммиты на новую базу, создавая **новые ID коммитов** (новые хеши). Переписывает историю — удобно для причёски локальной feature-ветки перед review, опасно на общих ветках без согласования.
git switch feature/login
git fetch origin
git rebase origin/main
git rebase -i HEAD~4 # squash, reword, reorder последних 4
После rebase push в remote, которым пользуются другие, обычно требует `git push --force-with-lease` — безопаснее слепого `--force`, отказывается если remote неожиданно сдвинулся.
На интервью: почему rebase меняет хеши, когда уместен interactive rebase, правила координации на shared branches.
Типовые ошибки: rebase публичных веток дублирует работу; конфликты при rebase на каждом воспроизведённом коммите; путаница rebase и merge при pull.
Компромисс — линейная история для review против безопасности непереписанных общих refs.
Чеклист:
- Rebase для локальной причёски перед PR.
- Не переписывайте историю, на которой уже строятся другие.
- `--force-with-lease` при необходимости перезаписи push.
- Зафиксируйте политику команды: rebase vs merge в PR.