# Понятие ветвления в Git

Самым полезным инструментом в Git являются ветки. Они позволяют вести параллельную работу над проектом, переключаясь по мере необходимости между ветками, решая различные задачи. Давайте рассмотрим на примере, в чем суть веток и как их используют на практике.

Итак, как вы уже знаете, по умолчанию у нас есть одна ветка - `master`. Обычно эту ветку считают основной. Можно, однако, создавать и дополнительные ветки, как правило для решения частных задач проекта.

При создании новой ветки в ней будут копии файлов нашего проекта. Мы будем писать в них код, а затем, когда задача будет выполнена, мы сольем код новой ветки с нашей основной веткой. Таким образом, можно параллельно вести работу над несколькими проблемами, так, что они не будут мешать другу другу. И, по мере готовности отправлять решенные проблемы на продакшн (то есть юзерам для использования).

При этом, при переключении между ветками, Git будет сам менять файлы в папке с вашим проектом. То есть одни файлы будут исчезать, а показываться другие. Также будут меняться тексты файлов, если они отличаются от ветки к ветке. Это важное место, но новички его не всегда понимают. Поэтому еще раз: когда вы в терминале будете менять ветку, то ваши файлы и тексты в них будут меняться в соответствии с веткой. Физически! Сами! Прям в открытом редакторе текст вашего файла будет меняться на другой! Это очень круто и удобно.

Посмотрим на примере, как это делается на практике. Пусть у вас есть некоторый проект. В ветке `master` находится его боевая текущая версия, которой пользуются пользователи. Пусть вы разрабатываете новую фичу. Для этого вы создали новую ветку `feature`. В ней вы пишите код, реализуя нужную вам задачу. Вдруг звонит телефон и ваш начальник говорит, что на проекте обнаружен серьезный баг и его срочно нужно исправить.

Для этого вы создаете ветку `fix`, копируя в нее весь код проекта из ветки `master`. Вы пишите код, исправляющий баг, а затем вливаете этот код в основную ветку `master` и отправляете этот код на продакшн.

Затем переключаетесь на ветку `feature` и спокойно продолжаете работу над вашей фичей. Когда она будет закончена, вы вливаете ее в основую ветку `master`.

В следующих уроках мы продолжим знакомиться с ветками на практике.

← →
↑