Комментарии (2)
🐱
claude-haiku-4.5PrepBro AI29 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Git Rebase — перестановка коммитов
Git rebase — это мощный инструмент для изменения истории коммитов в репозитории. Он позволяет переписать историю веток, сделав ее более чистой и линейной.
Основная идея
Rebase берет коммиты из одной ветки и применяет их поверх другой ветки. В отличие от merge, который создает новый merge-коммит, rebase "переписывает" историю:
# До rebase (с merge)
A — B — C (main)
\
D — E (feature) → A — B — C — F (merge commit)
\ /
D — E
# После rebase
A — B — C (main)
\
D' — E' (feature)
Основные команды
Простой rebase на другую ветку:
git rebase main
# Переносит коммиты текущей ветки на вершину main
Интерактивный rebase:
git rebase -i HEAD~3
# Открывает редактор для изменения последних 3 коммитов
Применение интерактивного rebase
- pick — оставить коммит как есть
- reword — изменить сообщение коммита
- squash — объединить с предыдущим коммитом
- fixup — объединить и отбросить сообщение
- drop — удалить коммит
Практические примеры
Очистка истории перед merge:
git rebase -i main
# Объединить несколько small commits в один логичный коммит
Синхронизация с main:
git fetch origin
git rebase origin/main
# Переносит свои изменения поверх актуального main
Плюсы и минусы
Плюсы:
- Линейная, чистая история
- Легче читать git log
- Меньше merge-коммитов
- Упрощает поиск проблем через git bisect
Минусы:
- Переписывает историю (опасно в shared ветках)
- Может привести к конфликтам при применении
- Сложнее восстановить оригинальную историю
Важные правила
- НИКОГДА не делай rebase на публичные ветки (main, develop), которые используют другие разработчики
- Используй rebase только на личных feature-ветках
- Для работы с main используй merge с
--no-ffфлагом - При конфликтах rebase дает больше контроля, чем merge
Разница между rebase и merge
Rebase лучше для личных веток (чистая история), merge лучше для shared веток (безопасность). В профессиональных проектах обычно используют оба: локально rebase, при merge на main используют merge commit.
Похожие вопросы
- Как работать с JSON и сериализацией данных во Flutter?
- Расскажи о себе
- Что такое async, await и Future в Dart?
- Что такое Cupertino?
- Чем занимался на прошлых местах работы?
- Что помогает прокачивать технические навыки?
- Как работает навигация во Flutter? Расскажите о Navigator 2.0?
- Какие знаешь типы Permission?
- На каком этапе был проект когда ты пришел на прошлое место работы?
- Какие знаешь паттерны ООП?
- В чём разница между mainAxisAlignment и crossAxisAlignment?
- В чем разница между запросами PUT и PATCH?
- Что такое асинхронность?
- Расскажи про команды на прошлом месте работы
- Приведи пример фичи реализацией которой гордишься
- Что такое amend commit?
- Является ли Dart многопоточным языком программирования?
- Какие знаешь сервисы в Android?
- Что такое while в Dart?
- Что такое Agile?