Короткий ответ
Ветка в Git — это независимая линия разработки: несколько разработчиков могут работать над отдельными фичами, не затрагивая основную кодовую базу. Merge объединяет истории веток, создавая merge-коммит и сохраняя полную картину. Rebase «воспроизводит» коммиты одной ветки поверх другой, переписывая их ради линейной истории.
Как это работает подробнее
Обе команды интегрируют изменения из одной ветки в другую, но дают разную форму истории коммитов.
- Работа с ветками.
git branch featureсоздаёт ветку,git checkout featureпереключается на неё, аgit merge featureвливает её в текущую. - Механика merge. Слияние создаёт новый merge-коммит, история становится нелинейной, но сохраняется полная картина того, что происходило.
- Механика rebase. Коммиты ветки «перемещаются» и накладываются поверх другой ветки: merge-коммиты не появляются, история линейна.
- Практические рекомендации. Rebase удобен для чистой линейной истории в своих feature-ветках, merge предпочтителен для общих публичных веток, где историю переписывать нельзя.
- Главное ограничение. При rebase коммиты переписываются заново, поэтому его не применяют к веткам, которые уже опубликованы и используются другими.
Пример кода
Работа с ветками, слияние и rebase
git branch feature/login # создать ветку
git checkout feature/login # переключиться на неё
git merge feature/login # влить ветку в текущую
git rebase main # переложить коммиты ветки поверх mainЧто использовать на практике
- Feature-ветки. Каждую задачу веди в отдельной ветке, чтобы изолировать изменения.