Привет, Глеб Котовский с вами!
Сегодня мы погрузимся в одну из самых мощных функций Git: git rebase.

Что такое Git Rebase?
По своей сути, git rebase — это метод перемещения или объединения серии коммитов на новый базовый коммит. В отличие от git merge, который создаёт коммит слияния, перебазирование изменяет историю коммитов. Это позволяет упорядочить историю проекта, делая её более линейной и понятной.
Основные цели git rebase:
- Упрощение истории: Позволяет создать чистую линейную историю проекта, удаляя ненужные коммиты слияния, которые обычно возникают при слиянии веток.
- Обновление feature-ветки: Помогает перенести изменения из одной ветки (обычно
mainилиmaster) в другую (вашуfeature-ветку), упрощая управление текущей работой.
Как это работает?
При перебазировании Git берёт коммиты из текущей ветки и добавляет их поверх другой ветки. Процесс можно визуализировать так:
- У вас есть две ветки:
featureиmain. - Ветка
featureответвилась отmain, имея несколько уникальных коммитов. - При перебазировании
featureнаmainGit временно сохраняет коммиты изfeature, перемещаетfeatureна верхушкуmainи повторно применяет эти коммиты по очереди.
Исходные коммиты:
A---B---C (main)
/
D---E (feature)
Коммиты A, B, C — изменения в main, D и E — ваши изменения в feature.
После выполнения:
git checkout feature
git rebase main
Git воспроизведёт коммиты D и E поверх C. Результат:
A---B---C---D'---E' (feature)
/
main
D' и E' — новые коммиты с другими хешами, так как применены поверх C.
Когда использовать Git Rebase
1. Для чистоты истории
В командной работе вместо git merge (который захламляет историю коммитами слияния) используйте git rebase. Это создаёт линейную историю изменений.
2. Обновление feature-веток
Регулярно перебазируйте свою feature-ветку на main, чтобы:
- Разрешать конфликты постепенно
- Избежать масштабного конфликта при слиянии
3. Сжатие коммитов (Squash)
Объедините несколько коммитов в один перед слиянием с main:
git rebase -i HEAD~3
Откроется интерактивный режим перебазирования.
4. Интерактивный Git Rebase
Позволяет управлять отдельными коммитами:
git rebase -i HEAD~3
Доступные действия в редакторе:
- pick — оставить коммит как есть
- squash — объединить с предыдущим коммитом
- edit — остановиться для внесения изменений
- reword — изменить сообщение коммита
5. Если вы заблудились в интерактивном режиме
Советы для восстановления контроля:
- Проверьте вывод терминала: Git подсказывает, что делать дальше.
- Интерактивный редактор: Внимательно читайте инструкции вверху. Для выхода:
- Vim:
:q(или перезагрузка ПК 😉) - Nano:
Ctrl + X
- Vim:
- Отмена перебазирования:
git rebase --abort - Просмотр истории коммитов:
git log - Документация:
git help rebase - Обратитесь за помощью к коллегам при необходимости
- Практикуйтесь в тестовом репозитории
Помните: это нормально — чувствовать себя немного потерянным. Не торопитесь!
Лучшие практики
- Только для локальных изменений: Не перебазируйте коммиты, уже отправленные в удалённый репозиторий.
- Коммуникация в команде: Предупреждайте коллег о перебазировании общих веток. Для синхронизации:
git pull --rebase - Разрешение конфликтов:
- При конфликте Git приостанавливает процесс
- Проверяйте изменения через
git status - После исправлений продолжайте:
git rebase --continue
- Интерактивное перебазирование: Используйте для “причёсывания” истории перед слиянием.
- Пишите содержательные сообщения коммитов.
Итоги
git rebase — мощный инструмент для поддержания чистой линейной истории. Идеален для:
- Обновления feature-веток
- Упрощения истории коммитов
- Подготовки к слиянию
Ответ на вопрос «Перебазировать или нет?» зависит от контекста:
- ✅ Да — для локальных feature-веток
- ❌ Нет — для публичных общих веток
Используйте перебазирование осознанно, следуя лучшим практикам, и ваша командная работа станет эффективнее.
Попробуйте git rebase в своём следующем проекте!
Удачного кодинга! Увидимся в следующей главе серии по Git 🚀