$ sudo teach IT

Представьте, что вы работаете над большим проектом: сайт, приложение или игру. В какой-то момент вам нужно добавить новую функцию или исправить ошибку. Но если сразу менять основной код, можно случайно всё сломать. Вот тут и приходят на помощь ветки в Git. Они позволяют вести несколько «линий развития» параллельно: одна остаётся стабильной, а в другой вы экспериментируете.

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

Что вы узнаете в рамках статьи

  • как создать новую ветку и зачем нужны префиксы (feature/, bugfix/ и др.);
  • как переключаться между ветками и сразу же создавать новую с флагом b;
  • как посмотреть список всех веток и определить текущую;
  • как удалить ненужную ветку и проверить результат;
  • какие ошибки часто встречаются при работе с ветками.

Ключевые термины

  • Ветка (branch) — отдельная линия разработки, в которой можно вносить изменения, не влияя на основную версию.
  • Переключение ветки (checkout) — переход на другую ветку для работы именно с ней.

Создание новой ветки

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

Базовая команда

Чтобы создать ветку, используется команда:

git branch <имя_ветки>

Например, если вы хотите разработать систему фильтрации товаров в интернет-магазине, создайте ветку:

git branch feature/filter

Теперь у вас появилась отдельная линия разработки feature/filter. Все изменения, которые вы будете делать в ней, никак не затронут основную ветку (main).

Почему важно давать понятные имена

Название ветки должно быть не просто случайным, а информативным. Представьте, что у вас в проекте десятки веток, и нужно быстро понять, какая за что отвечает.

✔ Примеры удачных имён:

  • feature/login-form — сразу понятно, что здесь разрабатывается форма логина;
  • bugfix/typo-in-header — исправление опечатки в заголовке;
  • hotfix/payment-crash — срочная правка ошибки в оплате.

✘ Примеры неудачных имён:

  • feature/1 или test123 — через неделю вы сами забудете, что это было.

Префиксы и стандарты

В командах обычно договариваются использовать специальные префиксы, чтобы все участники могли быстро ориентироваться:

  • feature/ — для новых функций,
  • bugfix/ — для исправления багов,
  • hotfix/ — для срочных правок,
  • experiment/ — для пробных идей.

Так структура веток становится похожа на аккуратный каталог, где легко найти нужную задачу.

Аналогия из жизни

Представьте, что вы ведёте лабораторный журнал. Каждая новая гипотеза или эксперимент записываются на отдельной странице с заголовком. Если бы все заметки шли подряд без подписей, разобраться было бы невозможно. Но когда каждая страница подписана чётко («Эксперимент: реакция А + В», «Эксперимент: температура выше 50°C»), легко вернуться к нужному месту.

То же самое с ветками в Git: правильное имя помогает быстро понять цель изменений.

Переключение на ветку

Создать ветку — это только первый шаг. Чтобы начать в ней работать, нужно переключиться с текущей ветки на новую. Это как открыть новую страницу в тетради: пока вы её не развернули, вы всё ещё пишете в старой.

Основная команда

Для переключения используется команда:

git checkout <имя_ветки>

Например:

git checkout feature/filter

После этого рабочая директория и индекс перестраиваются так, чтобы отражать содержимое ветки feature/filter. Теперь все изменения и новые коммиты будут относиться именно к этой ветке.

Упрощённый способ: создание + переключение

Раньше процесс занимал два шага: сначала git branch <имя_ветки>, потом git checkout <имя_ветки>. Но начиная с 2019 года Git поддерживает короткий вариант:

git checkout -b feature/filter

Флаг -b означает «создать ветку и сразу переключиться на неё». Это удобно, когда вы только начинаете работу над новой задачей.

Аналогия из жизни

Представьте, что у вас есть несколько рабочих тетрадей по разным предметам. Если вы продолжите писать математику в тетради по литературе, будет путаница. Поэтому вы достаёте нужную тетрадь и открываете её — именно это и есть переключение на ветку.

Важный момент: незакоммиченные изменения

Git не позволит вам переключиться на другую ветку, если в текущей есть незакоммиченные изменения. Это сделано специально, чтобы вы случайно не потеряли работу.

Например, если вы начали менять код в main, но забыли сделать коммит, Git заблокирует переход в feature/filter. Решение:

  • либо закоммитьте изменения,
  • либо отложите их с помощью git stash,
  • либо отмените ненужные правки.

Просмотр веток

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

Основная команда

Чтобы увидеть список всех локальных веток в репозитории, выполните:

git branch

Пример вывода:

  main
* feature/filter
  bugfix/typo

  • main — главная ветка проекта,
  • feature/filter — ветка для разработки функции фильтрации,
  • bugfix/typo — ветка для исправления опечатки.

Звёздочка * указывает на то, в какой ветке вы находитесь в данный момент. В примере выше — это feature/filter.

Дополнительные опции

  1. Показать последний коммит в каждой ветке
git branch -v

Вывод:

* feature/filter  a1b2c3d  Добавлена функция фильтрации
  main            e4f5g6h  Исправлена ошибка в авторизации
  bugfix/typo     i7j8k9l  Убрана опечатка в заголовке

Теперь вы видите не только названия веток, но и их «состояние»: последний коммит и его сообщение.

  1. Показать локальные и удалённые ветки
git branch -a

Вывод:

* feature/filter
  main
  bugfix/typo
  remotes/origin/main
  remotes/origin/feature/login

  • Ветки без префикса remotes/ — это ваши локальные ветки.
  • Ветки с remotes/origin/ — это ветки на удалённом репозитории (например, на GitHub).

Аналогия из жизни

Представьте, что вы ведёте несколько рабочих тетрадей для разных предметов. Команда git branch — это как список всех тетрадей у вас на столе. Звёздочка — это та тетрадь, которая открыта прямо сейчас. А команда git branch -a показывает ещё и тетради, которые лежат у вашего одноклассника (удалённый репозиторий).

Удаление ветки

Работая над проектом, вы будете создавать множество веток: для новых функций, исправлений ошибок, экспериментов. Но со временем часть веток теряет актуальность. Чтобы репозиторий не захламлялся и было легче ориентироваться, ненужные ветки стоит удалять.

Основная команда

Удалить ветку можно так:

git branch -d <имя_ветки>

Пример:

git branch -d feature/filter

Эта команда удалит ветку feature/filter, но только если она уже была слита с основной (main или другой). Это защита от случайной потери работы.

Принудительное удаление

Если ветка не была слита, Git выдаст предупреждение. В этом случае можно использовать «жёсткий» вариант:

git branch -D <имя_ветки>

Например:

git branch -D feature/filter

⚠️ Но здесь нужно быть предельно осторожным: все несмерженные изменения будут потеряны безвозвратно. Этот вариант обычно применяют только тогда, когда вы точно знаете, что изменения не нужны (например, эксперимент не удался).

Аналогия из жизни

Представьте, что у вас есть черновики для книги. Если вы переписали удачный сюжет в основной текст, старые черновики можно смело выбросить (-d). Но если черновик ещё не перенесён в книгу, его удаление без копии (-D) — это риск потерять ценные идеи навсегда.

Советы по работе с удалением веток

  • Перед удалением убедитесь, что вы переключились на другую ветку (нельзя удалить ветку, в которой вы сейчас находитесь).
  • Всегда проверяйте, была ли ветка слита в основную — чтобы не потерять изменения.
  • Используйте git branch или git log, чтобы убедиться, что нужные коммиты уже есть в главной линии разработки.

Наиболее частые ошибки

  • Переключение на несуществующую ветку (git checkout wrong-name).
  • Несохранённые изменения перед переключением → Git блокирует переход.
  • Удаление ветки с несмерженными изменениями → предупреждение или потеря работы (при D).

Наиболее частые вопросы

Как узнать, на какой ветке я нахожусь?
Выполните git branch — текущая ветка отмечена звёздочкой.

Можно ли создать ветку из определённого коммита?
Да:

git branch <имя_ветки> <хеш_коммита>

Что делать, если я забыл название ветки?
Посмотреть список командой git branch.

Итоги

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

На следующий урок