Что такое интерактивный rebase в Git и в каких случаях его применяют

Ответ

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

Основные сценарии использования:

  • Очистка истории перед созданием pull request: объединение мелких коммитов (fix, wip) в один логический.
  • Редактирование сообщений коммитов для большей ясности.
  • Удаление случайных или ненужных коммитов.
  • Изменение порядка коммитов для более логичного повествования.

Как это работает:

  1. Вы запускаете команду, указывая, с какого момента хотите редактировать историю. Например, для последних 3 коммитов:

    git rebase -i HEAD~3
  2. Git открывает текстовый редактор со списком этих коммитов, где для каждого указана команда pick (использовать коммит):

    pick a1b2c3d Fix typo in README
    pick e4f5g6h Add feature X
    pick i7j8k9l WIP
  3. Вы редактируете этот файл, заменяя pick на нужную команду:

    • reword (или r): изменить сообщение коммита.
    • squash (или s): объединить коммит с предыдущим.
    • fixup (или f): как squash, но отбрасывает сообщение этого коммита.
    • drop (или d): удалить коммит.
  4. После сохранения файла Git последовательно применит указанные действия.

⚠️ Золотое правило rebase: Никогда не используйте rebase для коммитов, которые уже были отправлены (push) в общую ветку (main, develop), так как это переписывает историю и создаст серьезные проблемы для других членов команды.