Ветки в Git: короткое руководство для новичка
Ветка в Git позволяет менять код отдельно от стабильной версии проекта. За 15–20 минут вы создадите ветку, сделаете коммит, сольёте изменения обратно и разберётесь с типичной ошибкой при конфликте.

За 15–20 минут вы создадите отдельную ветку Git, внесёте в неё изменение и объедините его с основной версией проекта. Это защищает рабочий код от экспериментов: пока вы делаете новую функцию, ветка main остаётся нетронутой.
Перед началом
Инструкция рассчитана на Git 2.23 и новее: в этих версиях доступны команды git switch и git restore. Проверьте версию и убедитесь, что у вас уже есть локальный репозиторий.
- Установленный Git. Проверка: команда
git --versionвыводит номер версии. - Папка проекта с каталогом
.git. Проверка: из папки проекта командаgit statusпоказывает состояние репозитория. - Чистая рабочая копия без незаписанных изменений. Проверка: в выводе есть фраза
nothing to commit, working tree cleanили её перевод в локали системы.
Ветка — это именованный указатель на коммит. Она не копирует весь проект и обычно занимает считаные байты: Git хранит последовательность коммитов, а ветка показывает, на каком из них вы сейчас находитесь.
Ветка нужна не для хранения «версии файла», а для безопасного движения по отдельной линии истории.
Пошаговый сценарий
-
Проверьте текущую ветку
Откройте терминал в каталоге проекта и выполните:
git status git branch --show-currentПервая команда показывает незакоммиченные изменения, вторая — имя текущей ветки. В чистом репозитории вы увидите название вроде
mainилиmaster. Проверка: командаgit branch --show-currentпечатает ровно одну ветку. -
Создайте рабочую ветку и перейдите в неё
Назовите ветку по задаче, а не по дате или имени компьютера:
git switch -c feature/profile-pageКлюч
-cодновременно создаёт ветку и переключает на неё. Префиксfeature/не обязателен, но помогает отличать новые функции от исправлений, напримерfix/login-error. Проверка: Git выведет сообщение о переходе, аgit branch --show-currentвернётfeature/profile-page. -
Измените файлы и посмотрите разницу
Добавьте небольшой фрагмент кода или измените существующий файл. Затем проверьте состояние и отличие от последнего коммита:
git status git diffgit statusперечислит изменённые файлы, аgit diffпокажет строки, которые добавлены или удалены. Проверка: в выводе есть именно тот файл и те строки, которые вы меняли. -
Подготовьте изменения к коммиту
Добавьте в индекс только нужный файл:
git add path/to/fileПуть замените на настоящий, например
src/profile.js. Командаgit diff --stagedпоказывает то, что попадёт в коммит; это последняя возможность заметить случайный пароль, временный файл или лишние правки. Проверка: нужный файл появился в разделеChanges to be committed, а staged-разница соответствует задаче. -
Создайте коммит
git commit -m "Add profile page"Сообщение должно описывать результат, а не процесс: «Add profile page» полезнее, чем «changes». Проверка: Git сообщает, что создан коммит, а повторный
git statusпоказывает чистую рабочую копию. -
Посмотрите историю ветки
git log --oneline --decorate -5Сокращённый журнал выводит последние пять коммитов и названия указателей. У последнего коммита рядом с хешем должна стоять ваша ветка
feature/profile-page. Проверка: в истории есть созданный вами коммит с ожидаемым сообщением. -
Вернитесь в основную ветку
Сначала узнайте её имя из шага 1. В большинстве новых проектов это
main:git switch mainЕсли у проекта основная ветка называется
master, используйте это имя. Проверка: командаgit branch --show-currentпоказывает основную ветку, а файл проекта временно возвращается к состоянию до ваших изменений. -
Объедините рабочую ветку с основной
Находясь в основной ветке, выполните:
git merge feature/profile-pageGit добавит коммит рабочей ветки в историю основной. Если изменения не пересекаются, слияние завершится автоматически. Проверка:
git log --oneline --decorate -5в основной ветке показывает коммит изfeature/profile-page, аgit statusне сообщает о незавершённом слиянии. -
Удалите завершённую ветку
git branch -d feature/profile-pageБезопасный ключ
-dудаляет только ветку, изменения которой уже вошли в текущую историю. Это удаляет имя указателя, но не стирает сам коммит, если он доступен через основную ветку. Проверка: командаgit branchбольше не показываетfeature/profile-page.
Если не получилось
Git пишет «fatal: not a git repository»
Вы находитесь не в папке проекта или в ней ещё нет репозитория. Перейдите в каталог с проектом командой cd путь-к-проекту и снова выполните git status. Если проект новый, репозиторий создают командой git init, но перед этим убедитесь, что выбрана правильная папка.
«Your local changes would be overwritten by checkout»
В рабочем каталоге есть незакоммиченные изменения, которые переключение ветки может затереть. Сначала либо создайте коммит, либо временно уберите правки командой git stash push -u -m "temporary work", переключитесь, а затем верните их через git stash pop. Не используйте удаляющие команды, пока не проверили, что изменения больше не нужны.
«pathspec ... did not match any file(s) known to git»
Git не нашёл указанную ветку или файл. Проверьте имя командой git branch; имена чувствительны к регистру. Если ветка существует только в удалённом репозитории, сначала получите сведения о нём командой git fetch, а затем уточните порядок создания локальной ветки в правилах вашего проекта.
После git merge появился конфликт
Обе ветки изменили один и тот же участок файла, и Git не смог выбрать вариант автоматически. Откройте файл, найдите маркеры <<<<<<<, ======= и >>>>>>>, оставьте правильный код и удалите маркеры. Затем выполните:
git add path/to/resolved-file
git commit
Проверка: git status больше не показывает Unmerged paths. Если вы поняли, что начали слияние ошибочно, отменить незавершённый процесс можно командой git merge --abort.
Что важно не перепутать
Создание ветки не отправляет её на GitHub, GitLab или другой сервер. Локальная ветка существует только на вашем компьютере, пока вы не опубликуете её командой git push; точная команда зависит от имени удалённого репозитория и принятого в команде процесса.
Не работайте напрямую в main, если проектом пользуются несколько человек. Обычная схема выглядит так: ветка задачи, один или несколько небольших коммитов, проверка, слияние через pull request или merge request. Инвалидация устаревших веток и правила переписывания истории — отдельная тема.
Коммит не заменяет тесты. Перед слиянием запустите тесты проекта, проверьте сборку и убедитесь, что в коммит не попали секреты и файлы из локального окружения.
Что делать дальше
Повторите сценарий на небольшой безопасной задаче, затем изучите удалённые ветки и pull request в вашем хостинге. В рабочем проекте полезно следить за тремя показателями: сколько времени ветка живёт, сколько конфликтов возникает при слиянии и сколько изменений приходится возвращать после проверки. Если ветки живут неделями и регулярно конфликтуют, делите задачи мельче и чаще синхронизируйте их с основной веткой.
Инфографика для маркетплейса: Три главных преимущества товара короткими фразами, выноски в безопасной зоне превью, точный размер площадки.
Спросить за 60 ₽Источники: Git Documentation: git-switch, Pro Git: Git Branching — Branches in a Nutshell
Частые вопросы
Ветка в Git копирует весь проект?
Чем ветка отличается от коммита?
Можно ли удалить ветку после слияния?
Что делать, если я создал ветку не из той ветки?
Почему после переключения ветки изменённый файл не поменялся?
Что делать, если у меня Git старше 2.23 и нет команды git switch?
Что делать, если конфликт возник на рабочем сервере?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.