Ветвление в Git - одна из ключевых концепций, которая позволяет эффективно работать над разными функциями или исправлениями ошибок независимо от основного кода. Каждая ветка представляет собственную линию разработки с отдельной историей коммитов. Когда функциональность готова, ветка может быть объединена с основной веткой.

Для объединения двух веток используются команды слияния (merge) и ребейзинга (rebase).

Слияние веток (git merge)

Команда 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)

Команда git rebase переносит изменения из одной ветки на другую путем создания новой линии истории. Представим, есть ветка feature, на которой вы работали над новой функциональностью:

git rebase master

Последняя команда берет все коммиты с ветки feature и помещает их в новую историю поверх текущей головы ветки master. Получается линейная история без дополнительных коммитов слияния.