Ключевые концепции

Ветка

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

Можно создавать новые ветки для работы над новыми возможностями или исправлениями ошибок, а когда всё готово, сливать их обратно в ветку main. Новая ветка всегда начинается с последнего коммита в текущей ветке.

Термин ветка для задачи (англ. feature branch) означает обычную ветку, выделенную под конкретную задачу или возможность. Её можно назвать как угодно — для Git это не имеет значения (например, login, feature-login, feature/login, bugfix/issue-123 и т. д.).

Ветки позволяют экспериментировать с идеями, параллельно работать над разными задачами и изолировать изменения от ветки main до тех пор, пока они не будут готовы. Работать можно только в одной ветке одновременно, но между ними легко переключаться по мере необходимости.

В Git ветки очень «лёгкие», и ими просто управлять. Создание ветки происходит мгновенно и не требует копирования файлов. Это позволяет без проблем создавать множество веток для разных задач, не переживая за место на диске или производительность.

При клонировании или получении изменений из удалённого репозитория создаются локальные копии его веток только для чтения. Они называются удалённо-отслеживаемыми ветками (англ. remote-tracking branches). Их названия имеют формат <имя-удалённого-репозитория>/<имя-ветки> (например, origin/main). Они позволяют видеть состояние веток на сервере, не затрагивая твои локальные ветки.

Основная статья: Удалённо-отслеживаемая ветка

Примеры

Создать новую ветку new-feature и сразу переключиться на неё:

git switch -c new-feature

Переключиться на ветку main:

git switch main

Влить ветку other-feature в текущую ветку:

git merge other-feature

Удалить ветку other-feature:

git branch -d other-feature

Настроить текущую ветку на отслеживание удалённой ветки origin/feature:

# Находясь в ветке `feature`:
git branch --set-upstream-to=origin/feature
# Более короткая версия:
git branch -u origin/feature

# Теперь можно использовать `git pull` без указания
# удалённой ветки. Это подтянет изменения
# из `origin/feature` и вольёт их в
# ветку `feature`:
git pull