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.