Ответ
Интерактивный rebase (git rebase -i) — это мощный инструмент Git для изменения истории коммитов в вашей локальной ветке. Он позволяет переупорядочивать, редактировать, объединять или удалять коммиты перед тем, как поделиться ими с командой.
Основные сценарии использования:
- Очистка истории перед созданием pull request: объединение мелких коммитов (
fix,wip) в один логический. - Редактирование сообщений коммитов для большей ясности.
- Удаление случайных или ненужных коммитов.
- Изменение порядка коммитов для более логичного повествования.
Как это работает:
-
Вы запускаете команду, указывая, с какого момента хотите редактировать историю. Например, для последних 3 коммитов:
git rebase -i HEAD~3 -
Git открывает текстовый редактор со списком этих коммитов, где для каждого указана команда
pick(использовать коммит):pick a1b2c3d Fix typo in README pick e4f5g6h Add feature X pick i7j8k9l WIP -
Вы редактируете этот файл, заменяя
pickна нужную команду:reword(илиr): изменить сообщение коммита.squash(илиs): объединить коммит с предыдущим.fixup(илиf): какsquash, но отбрасывает сообщение этого коммита.drop(илиd): удалить коммит.
-
После сохранения файла Git последовательно применит указанные действия.
⚠️ Золотое правило rebase: Никогда не используйте rebase для коммитов, которые уже были отправлены (push) в общую ветку (main, develop), так как это переписывает историю и создаст серьезные проблемы для других членов команды.