Ветвление в Git - одна из ключевых концепций, которая позволяет эффективно работать над разными функциями или исправлениями ошибок независимо от основного кода. Каждая ветка представляет собственную линию разработки с отдельной историей коммитов. Когда функциональность готова, ветка может быть объединена с основной веткой.
Для объединения двух веток используются команды слияния (merge) и ребейзинга (rebase).
Команда git merge
используется для объединения другой ветки в текущую. Обычно вы находитесь в главной ветке, например master
, и выполняете слияние тематической ветки:
git merge feature-branch
Git определяет общего предка для обеих веток и применяет изменения из тематической ветки поверх кода главной ветки. В результате образуется специальный коммит слияния (merge commit), который имеет две родительские записи - по одной на каждую из объединенных веток.
Если изменения не конфликтуют, слияние происходит автоматически. В случае конфликтов Git оставляет специальные маркеры в файлах, и вы должны вручную их разрешить, указав, какие изменения следует оставить.
Вы можете выполнить слияние двух веток, не переходя на одну из них, используя команду git merge
вместе с именами веток.
git merge <branch1> <branch2>
Где <branch1>
и <branch2>
- это имена веток, которые вы хотите слить.
Предположим, у вас есть две ветки: master
и feature
. Вы можете выполнить слияние ветки feature
в ветку master
, не переходя на master
, используя следующую команду:
git merge master feature
Команда git rebase переносит изменения из одной ветки на другую путем создания новой линии истории. Представим, есть ветка feature, на которой вы работали над новой функциональностью:
git rebase master
Последняя команда берет все коммиты с ветки feature и помещает их в новую историю поверх текущей головы ветки master. Получается линейная история без дополнительных коммитов слияния.