Ответ
git rebase перемещает (перебазирует) всю историю коммитов одной ветки на вершину другой ветки, создавая линейную историю.
Основное использование:
git checkout feature-branch
git rebase main
# Теперь коммиты из feature-branch применяются поверх актуального main
Зачем это нужно?
- Чистая история: Избегает лишних merge-коммитов, сохраняя историю линейной и легко читаемой.
- Интеграция изменений: Позволяет проверить, что ваша ветка корректно работает с последними изменениями в базовой ветке (например,
mainилиdevelop).
Ключевые особенности и риски:
- Перезапись истории: Изменяет хэши коммитов. Нельзя использовать для коммитов, уже отправленных в общий репозиторий, если с ними работали другие разработчики.
- Интерактивный режим (
-i): Позволяет редактировать, объединять (squash), удалять или менять порядок коммитов перед применением. - Разрешение конфликтов: Конфликты могут возникать для каждого перебазируемого коммита, что требует их последовательного разрешения.
Сравнение с git merge:
rebase: «Переписывает» историю, перемещая ваши коммиты. Используется для подготовки ветки к слиянию.merge: Сохраняет полную историю, создавая новый коммит слияния. Безопаснее для публичных веток.