Ответ
Git rebase — это команда для перемещения или объединения последовательности коммитов одной ветки на вершину другой ветки. Она перезаписывает историю коммитов, создавая линейную последовательность, как если бы работа велась поверх самой актуальной базовой ветки.
Основное использование:
# Находясь в feature-ветке, перебазировать её на main
git checkout feature-branch
git rebase main
Эта команда:
- Временно сохраняет коммиты из
feature-branch. - Сбрасывает
feature-branchна тот же коммит, что иmain. - Последовательно применяет сохраненные коммиты поверх
main.
Плюсы:
- Чистая история: Убирает лишние merge-коммиты, история становится линейной и легко читаемой.
- Упрощение: Облегчает поиск по логам и бисекцию (git bisect).
Минусы и риски:
- Перезапись истории: Изменяет хэши коммитов. Опасно для веток, уже отправленных в общий репозиторий, так как сломает историю у других разработчиков.
- Конфликты: Может потребовать разрешения конфликтов для каждого перебазируемого коммита.
Правило: Используйте rebase для локальной очистки истории перед слиянием через merge. Для публичных веток используйте merge.