Вы хотите добавить новую функцию в проект, но боитесь сломать то, что уже работает. Можно сделать копию, но это неудобно: дубли плодятся, а история изменений теряется. В Git эту проблему решают ветки. Чтобы начать с ними работать, нужно освоить всего лишь четыре базовые команды. Подробности — в этой статье.
Что такое ветка Git
Ветка — отдельная линия разработки внутри проекта. Когда вы создаете новую ветку, Git копирует текущее состояние проекта и позволяет работать с ним независимо от основной версии.
Обычно главная ветка называется main или master. В ней хранится стабильный код. Если вы хотите добавить новую функцию или поэкспериментировать, то создаете отдельную ветку — там можно менять что-угодно, не рискуя сломать прод. Потом новую ветку Git сливают обратно в main или просто удаляют.
Обычно разработчики создают отдельную ветку под каждую задачу:
- создание новой функции;
- исправление ошибки;
- редизайн страницы;
- рабочие эксперименты.
Благодаря этому можно вносить изменения и работать в команде, не мешая друг другу.

Как выглядит работа с ветками Git на практике
Представим, что вам нужно добавить регистрацию на сайт. Без веток вы бы меняли код прямо в main. Но если что-то пойдет не так, то проблема сразу попадет в прод.
С ветками работа выглядит безопаснее:
- Создаете отдельную ветку под регистрацию.
- Переключаетесь в нее.
- Безопасно меняете код.
- Проверяете, все ли работает.
- Объединяете изменения с главной веткой.
Для каждого действия с ветками есть отдельная команда Git.
git branch
Git branch показывает список всех веток в проекте. При этом текущая ветка Git всегда помечается *звездочкой — это значит, что вы сейчас находитесь в ней.

Для создания новой ветки используют git branch + название новой ветки.

После этого созданная ветка появится в общем списке, но Git не переключится на нее автоматически. Это частая ошибка новичков: они создают новую ветку, но при этом продолжают работать в main.
Чтобы удалить ветку Git, введите git branch с флагом -d. Имейте ввиду, что в Git нельзя удалить ветку, если она еще не влита в основную версию проекта — это защита от случайной потери кода. Если вы уверены, что ветка больше не пригодится, можно использовать принудительное удаление с флагом -D.
git checkout
Команду git checkout -b используют, чтобы создать новую ветку и сразу переключиться в нее. После этого все ваши коммиты будут попадать в указанную ветку, а не в main.

Чтобы вернуться в основную ветку, используйте команду git checkout main.
Имейте ввиду, что git checkout может делать много разных вещей, например, восстанавливать файлы из коммитов, отменять изменения и делать другие операции, не связанные с ветками. Такая многозадачность часто путает новичков. Поэтому, начиная с версии Git 2.23, выпущенной в 2019 году, появилась новая более понятная альтернатива.
git switch
Чтобы упростить работу с ветками, сделали отдельную команду git switch. Ее единственная задача — переключение между ветками:
- Переключиться на существующую ветку — git switch название ветки;
- Создать новую ветку и сразу переключиться на нее — git switch -c название ветки;
- Вернуться в предыдущую ветку — git switch -.
По сравнению с checkout команда git switch выглядит проще и понятнее, особенно для новичков. Поэтому большинство разработчиков используют ее.

git merge
Предположим, вы сделали функцию в новой ветке и убедились, что она работает. После этого можно переключиться обратно в main и выполнить слияние с помощью git merge. Git объединит изменения с текущей веткой.

Если вдруг два разработчика изменили одну и ту же строку по-разному, произойдет конфликт. Git покажет проблемное место и предложит вручную выбрать итоговую версию кода.
Помните, что после merge ветка не удаляется автоматически. Если она больше не нужна, ее можно удалить через git branch -d.
Частые ошибки новичков
Создание веток — один из самых мощных инструментов Git, но именно с ним чаще всего возникают проблемы. Бывает, что начинающие разработчики:
- Работают напрямую в main. Например, потому что боятся слияния. Из-за этого нестабильный код попадает сразу в основную версию проекта. Чем раньше вы научитесь разрешать конфликты, тем увереннее будете чувствовать себя в командной разработке.
- Забывают переключиться в нужную ветку. Делают git branch и думают, что уже находятся в новой ветке. Но коммиты попадают в main, потому что переключения не было. В итоге изменения случайно оказываются не там, где планировалось.
- Долго не обновляют ветку. Чем сильнее ветка отстает от main, тем выше шанс получить сложный конфликт. Если разработчик работал в ветке две недели и все это время не делал merge, то при слиянии возникнет десяток конфликтов, которые будет трудно разрешить. Если обновлять код хотя бы раз в день, конфликты будут небольшими и понятными.
- Создают одну огромную ветку под все сразу. Большие ветки тяжело проверять, тестировать и объединять. Лучше создавайте отдельную ветку под каждую задачу, а когда она будет завершена — сливайте с основным кодом через git merge.
При работе с ветками важно быть внимательным. Ошибки здесь обходятся дороже, чем в обычных коммитах — можно потерять код или случайно сломать стабильную версию.
Главное про ветки Git
- Ветки Git используют, чтобы безопасно работать над задачами отдельно от основного кода.
- Главная ветка обычно называется main или master.
- git branch используют, чтобы отобразить список всех веток или создать новую.
- git checkout и git switch — переключают между ветками.
- git merge — соединяет новую ветку с основной.
- Чтобы избежать сложных конфликтов, рекомендуется выполнять слияние ветки с основным кодом хотя бы раз в день.
