webroad.online
  1. 1Веб
  2. 2HTML
  3. 3CSS
  4. 4JavaScript
  5. 5TypeScript
  6. 6Git
  7. 7Инструменты
  8. 8React
  9. 9Стейт-менеджмент
  10. 10Next.js
  11. 11Формы
  12. 12Данные и бэкенд
  13. 13SEO
  14. 14Tailwind CSS
  15. 15Анимации
  16. 16Тестирование
  17. 17Архитектура
Git · Урок 2 из 3

Ветки, merge и rebase

Параллельная работа, merge или rebase, fast-forward и конфликты.

Обновлено

Что такое ветка

Ветка (branch) — параллельная линия разработки. Вы начинаете от main (стабильный код), работаете над фичей в своей ветке, а main остаётся нетронутым, пока вы не решите влить изменения.

Технически ветка — это просто указатель на коммит, поэтому она создаётся мгновенно.

mainABCfeat/loginDE

Команды

Команда Что делает
git switch -c feat/login создаёт ветку и переключается на неё
git switch main переключиться на другую ветку
git branch список локальных веток
git merge feat/login вливает ветку в текущую
git rebase main переносит ваши коммиты поверх последнего main
git branch -d feat/login удаляет ветку (после merge)

Как вливать: merge или rebase

Merge Rebase
Что делает создаёт merge-коммит, который объединяет две истории переписывает ваши коммиты так, будто вы начали от последнего main
История показывает, что именно происходило, с ветвлениями линейная, читается легче
Переписывает историю нет да (новые коммиты, новые хеши)
Безопасно на общих ветках да нет — только в своей ветке, пока ею не поделились
Когда вливание в main (обычно через PR) обновить свою ветку последними изменениями из main

Fast-forward

Если main не сдвинулся с момента создания ветки, объединять нечего: Git просто переносит указатель main вперёд. Это называется fast-forward.

До merge:

mainABfeatCD

После merge — main просто передвинули вперёд, на D:

mainABCD

Squash merge

Все коммиты ветки становятся одним коммитом в main. Популярно на GitHub: история main остаётся чистой (один коммит на PR).

Конфликты

Возникают, когда две ветки меняют одни и те же строки. Git отмечает место:

<<<<<<< HEAD
const limit = 10
=======
const limit = 20
>>>>>>> feat/pagination

Выбираете правильный вариант (или объединяете), удаляете маркеры, затем git add + git commit (или git rebase --continue). В редакторе (VS Code) для этого есть кнопки.

Как избегать: короткие ветки (дни, а не недели), которые часто обновляются из main.

Именование веток

feat/login-google
fix/cart-total-rounding
chore/upgrade-next-16

Префикс говорит о типе изменения, остальное — о сути, в kebab-case.

Коротко

  • Ветка = указатель на коммит; работаете изолированно от main.
  • Merge сохраняет историю; rebase делает её линейной, но переписывает — только в своей ветке.
  • Короткие ветки = мало конфликтов.

Официальные источники

Упражнения

Была ли страница полезной?

Один клик — без регистрации.