Что такое git rebase?

«Что такое git rebase?» — вопрос из категории Инструменты тестирования, который задают на 10% собеседований QA Тестировщик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Git rebase — это команда для перемещения или объединения последовательности коммитов одной ветки на вершину другой ветки. Она перезаписывает историю коммитов, создавая линейную последовательность, как если бы работа велась поверх самой актуальной базовой ветки.

Основное использование:

# Находясь в feature-ветке, перебазировать её на main
git checkout feature-branch
git rebase main

Эта команда:

  1. Временно сохраняет коммиты из feature-branch.
  2. Сбрасывает feature-branch на тот же коммит, что и main.
  3. Последовательно применяет сохраненные коммиты поверх main.

Плюсы:

  • Чистая история: Убирает лишние merge-коммиты, история становится линейной и легко читаемой.
  • Упрощение: Облегчает поиск по логам и бисекцию (git bisect).

Минусы и риски:

  • Перезапись истории: Изменяет хэши коммитов. Опасно для веток, уже отправленных в общий репозиторий, так как сломает историю у других разработчиков.
  • Конфликты: Может потребовать разрешения конфликтов для каждого перебазируемого коммита.

Правило: Используйте rebase для локальной очистки истории перед слиянием через merge. Для публичных веток используйте merge.