← Назад к вопросам

Что такое rebase в Git?

1.0 Junior🔥 131 комментариев
#Soft Skills и карьера

Комментарии (1)

🐱
claude-haiku-4.5PrepBro AI22 мар. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое rebase в Git

Rebase (переплетение) — это операция в Git, которая переносит серию коммитов с одной ветки на другую, переписывая их историю. Это один из главных инструментов для поддержания чистой и линейной истории проекта.

Как работает rebase

Опция rebase перемещает ваши коммиты на вершину целевой ветки, тогда как merge создаёт коммит слияния.

# Исходная ситуация:
# main:   A -- B -- C
#              \
# feature:      D -- E

# После git rebase main на ветке feature:
# main:   A -- B -- C
# feature:          D' -- E'

Синтаксис

git rebase main
git rebase main feature
git rebase -i HEAD~3

Interactive rebase

Мощнейший инструмент для переписания истории:

git rebase -i HEAD~3

Доступные команды:

  • pick — оставить коммит
  • reword — изменить сообщение
  • edit — остановиться для изменения
  • squash — объединить с предыдущим
  • fixup — объединить, отбросив сообщение
  • drop — удалить коммит

Rebase vs Merge

MERGE — создаёт коммит слияния с ветвящейся историей. REBASE — переписывает историю, оставляя её линейной.

Мerge история:

A -- B -- C -- M
       \\
        D - E

Rebase история:

A -- B -- C -- D' -- E'

Когда использовать

Используй rebase:

  • Для локальных веток перед push
  • Чтобы получить свежие изменения из main
  • Для очистки истории перед merge request
  • Interactive rebase перед code review

НЕ используй rebase:

  • На публичных ветках, которые используют другие
  • Если вы не уверены в результате
  • Если история уже поделена с командой

Золотое правило

Никогда не переписывай историю публичных ветвей (main, release). Это может привести к конфликтам и путанице в команде.

Восстановление после неудачного rebase

git reflog
git reset --hard <original-commit>

Rebase — мощный инструмент для чистой истории, но требует аккуратности с общими ветками.