Введение
Представьте, что вы пишете рассказ. В какой-то момент сюжет может развиваться по одному из двух направлений: герой сражается с драконом или становится его другом. Вы хотите написать обе версии и сравнить их, но не хотите испортить основную рукопись.
В Git именно это позволяет делать ветвление. Оно создаёт параллельную линию разработки, в которой можно безопасно экспериментировать. Ветки — одна из важнейших возможностей Git: благодаря им изолированная работа становится простой и не требует больших затрат.
В Git ветка — это не полная копия проекта. В основном это перемещаемый указатель на последовательность коммитов. Поэтому создание веток выполняется быстро и не требует много ресурсов.
- Разработка возможностей: создайте новую систему входа в отдельном пространстве.
- Эксперименты: попробуйте новую идею дизайна, не нарушая работу текущего веб-сайта.
- Исправление ошибок: изолированно устраните критическую ошибку.
В этой лабораторной работе вы создадите параллельную временную шкалу (ветку), внесёте в неё изменения, а затем переключитесь обратно на основную временную шкалу, чтобы убедиться, что эксперименты не затронули исходный проект.
Создайте ветку для новой возможности
По умолчанию каждый репозиторий Git начинается с одной основной ветки, которую обычно называют master или main. Представляйте её как «основную временную шкалу» — официальную стабильную версию проекта.
Чтобы работать над новой возможностью, например страницей входа, и не подвергать риску стабильность основного проекта, создайте новую ветку.
Проверьте своё текущее положение:
git branch
Вывод:
* master
Символ * показывает, что сейчас вы находитесь на временной шкале master.
Эта отметка показывает текущий контекст ветки. В Git многие команды выполняются относительно ветки, на которую в данный момент указывает HEAD, поэтому важно знать, где вы находитесь.
Создайте новую ветку с именем feature_login:
git branch feature_login
Теперь вы создали новую временную шкалу! Однако вы ещё не переключились на неё.
Это показывает важное различие в Git: создание ветки и переключение на ветку — отдельные действия. Ветка может существовать, даже если она не является текущим рабочим контекстом.
Убедитесь, что ветка создана:
git branch
Вывод:
feature_login
* master
Ветка feature_login существует, но символ * показывает, что вы всё ещё находитесь в master.
Переключитесь на новую ветку
Создать временную шкалу недостаточно — нужно перейти на неё. Для переключения между ветками используется команда git checkout.
Переключитесь на новую ветку:
git checkout feature_login
Вывод:
Switched to branch 'feature_login'
Убедитесь, что переключение выполнено:
git branch
Вывод:
* feature_login
master
Звёздочка (*) переместилась! Теперь вы работаете в временной шкале feature_login. Все изменения, которые вы внесёте с этого момента, будут происходить только здесь.
Точнее, новые коммиты будут развивать ветку feature_login, а не master. Обе ветки по-прежнему используют общую историю до момента, в котором они разошлись.
Работайте в ветке для новой возможности
Теперь вы находитесь в безопасном пространстве для экспериментов. Давайте напишем код и создадим скрипт для нашей «возможности входа».
Создайте файл с именем login.sh:
echo "echo 'Logging in...'" > login.sh
Убедитесь, что файл появился в текущем каталоге:
ls
В выводе должны отображаться и README.md (унаследованный из master), и новый файл login.sh.
Сейчас login.sh — это просто файл на диске. Чтобы официально сохранить его в истории этой ветки, нужно создать коммит.
Это ещё раз показывает принцип работы веток: файлы появляются в рабочем дереве, но история ветки изменяется только после создания коммитов в этой ветке.
Зафиксируйте изменения в ветке
Сохраним проделанную работу. Помните стандартный рабочий процесс Git: Инициализация → добавление в индекс → коммит.
Проверьте состояние репозитория:
git status
Файл login.sh имеет статус Untracked.
Добавьте файл в индекс:
git add login.sh
Создайте коммит с файлом в истории feature_login:
git commit -m "Add login feature script"
Вывод:
[feature_login 8a2b3c] Add login feature script
Теперь это изменение навсегда записано, но только во временной шкале feature_login.
Именно благодаря такой изоляции ветки настолько полезны. Они позволяют разрабатывать, тестировать и экспериментировать, не продвигая основную ветку вперёд, пока вы не будете готовы.
Проверьте изоляцию веток
Настал важный момент. Мы утверждаем, что feature_login — это отдельная вселенная по сравнению с master. Докажем это, вернувшись в master.
Переключитесь обратно на ветку master:
git checkout master
Вывод:
Switched to branch 'master'
Посмотрите на файлы:
ls
Где login.sh? Его нет!
Именно этого мы и хотели добиться. Файл login.sh не существует во временной шкале master. Ваш эксперимент надёжно изолирован.
Чтобы убедиться, что файл не потерян навсегда, снова переключитесь на ветку с новой возможностью:
git checkout feature_login
ls
Файл снова появился! При переключении между временными шкалами Git мгновенно заменяет файлы в вашем каталоге.
Итоги
В этой лабораторной работе вы изучили возможности ветвления:
- Безопасность: вы можете разрабатывать новые возможности в отдельной ветке (
feature_login), не подвергая риску основной код (master). - Переключение контекста: вы использовали
git checkout, чтобы переходить между параллельными временными шкалами. - Изоляция: вы убедились, что изменения, зафиксированные в одной ветке, не появляются в другой.
Именно так работают профессиональные команды. Разработчики создают отдельные ветки для каждой новой возможности или исправления ошибки, сохраняя основную кодовую базу чистой и стабильной.



