Зачем планировать rebase
Interactive rebase — мощный инструмент, но в тексте редактора легко запутаться при 10–20 коммитах. Перепутаете порядок — получите конфликты или потерянные коммиты. Визуальный планировщик помогает спланировать заранее: какие коммиты объединить, какие удалить, в каком порядке.
Шесть действий
- pick — взять коммит как есть.
- reword — пересохранить с новым сообщением.
- edit — приостановить для правки кода (изменить файлы → git commit --amend → git rebase --continue).
- squash — объединить с предыдущим, сохранив оба сообщения для редактирования.
- fixup — объединить с предыдущим, отбросив сообщение.
- drop — удалить коммит из истории.
Стандартный workflow
- Создайте feature-ветку, делайте коммиты по ходу работы.
- Перед PR/MR — interactive rebase, чтобы убрать «WIP», объединить мелкие правки.
- git rebase -i origin/main — открывает редактор.
- Замените pick на squash/fixup/drop где нужно.
- Сохраните, разрешите конфликты (если есть).
- git push --force-with-lease.
- Создайте PR — история чистая.
Разрешение конфликтов
Когда rebase натыкается на конфликт:
# 1. Посмотреть конфликтные файлы git status # 2. Открыть, разрешить (убрать <<<<<<<, =======, >>>>>>>) # 3. Добавить разрешённые git add <файл> # 4. Продолжить rebase git rebase --continue # Если что-то пошло совсем не так — отменить git rebase --abort
Force push безопасно
Никогда не используйте обычный git push --force — он перезаписывает remote, даже если кто-то запушил после вас. Используйте git push --force-with-lease — он откажется от push, если remote изменился, защищая чужие коммиты.
Запреты:
- Никогда не пушьте force на main / master / develop / release.
- Не делайте rebase коммитов, на которые ссылаются другие разработчики.
- Только своя feature-ветка до code review — там rebase безопасен.
- Pro Git book — Rewriting History. Scott Chacon, Ben Straub. git-scm.com/book/en/v2/Git-Tools-Rewriting-History. обновляется.
- git-rebase(1) — официальный manpage. Git Project. git-scm.com/docs/git-rebase. обновляется.
- GitHub Flow. GitHub. docs.github.com/en/get-started/quickstart/github-flow. обновляется.
- Atlassian Git Tutorial — Rewriting History. Atlassian. atlassian.com/git/tutorials/rewriting-history. обновляется.
