Ответ
Интерактивный 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
), так как это переписывает историю и создаст серьезные проблемы для других членов команды.