Что самое важное при использовании интерактивного rebase в Git?

«Что самое важное при использовании интерактивного rebase в Git?» — вопрос из категории DevOps, который задают на 24% собеседований PHP Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Самое важное правило: никогда не делайте интерактивный rebase для коммитов, которые уже были отправлены в общий репозиторий (push). Это перезаписывает историю и вызывает конфликты у всех, кто уже склонировал эти изменения.

Интерактивный rebase (git rebase -i) — это мощный инструмент для локальной очистки истории перед тем, как поделиться работой.

Основное применение и команды:

# Перебазировать последние 4 коммита текущей ветки
git rebase -i HEAD~4

В открывшемся редакторе вы можете:

  • pick — оставить коммит как есть.
  • reword — изменить сообщение коммита.
  • edit — остановиться для внесения изменений в сам коммит.
  • squash или fixup — объединить коммит с предыдущим (fixup отбрасывает его сообщение).
  • drop — удалить коммит.

Пример сценария (объединение коммитов):

# Исходная история: 4 коммита с мелкими правками
pick a1b2c3 Добавил новую функцию
pick d4e5f6 Исправил опечатку в комментарии
pick g6h7i8 Добавил недостающую проверку
pick j8k9l0 Обновил документацию

# После редактирования (объединяем правки в один логический коммит):
pick a1b2c3 Добавил новую функцию
fixup d4e5f6 Исправил опечатку в комментарии
fixup g6h7i8 Добавил недостающую проверку
pick j8k9l0 Обновил документацию
# Результат: 2 коммита — один с функцией и правками, второй с документацией.

Практический совет: Я использую интерактивный rebase в своей feature-ветке перед созданием пул-реквеста, чтобы создать чистую, логичную историю, которую легко ревьюить и мержить.