Проверяет понимание операции переноса и «переписи» истории коммитов.
git rebase перемещает одну ветку поверх другой, копируя коммиты и переписывая их базу. Он берёт набор коммитов, начиная с точки ветвления, и последовательно применяет их к новой базе, создавая новые коммиты с теми же изменениями, но другим родителем. Это позволяет получить линейную историю без merge-коммитов.
Механизм работы:
Git находит общий предок (fork point) ветки и целевой базы.
«Отделяет» коммиты ветки, формируя пачку патчей.
Поочерёдно применяет патчи к целевой ветке, создавая новые SHA.
Команды:
git checkout feature && git rebase main
Разрешение конфликтов при остановках, затем git rebase --continue.
При ошибках — git rebase --abort.
Плюсы:
Чистая линейная история, легко читать логи.
Упрощает bisect и поиск ошибок.
Минусы:
Переписывает историю: нельзя делать rebase публичных веток.
Варианты:
git rebase -i для интерактивного редактирования (составление, сжатие, переупорядочивание коммитов).