Ветки в Git: что нужно знать до начала работы
За 15–20 минут вы создадите ветку, сохраните в ней изменение и объедините его с основной — не затрагивая чужую работу. Понадобятся Git, терминал и папка проекта; разберём также, что делать, если команда не сработала.

За 15–20 минут вы создадите отдельную ветку Git, внесёте в ней изменение и перенесёте его в основную — не затрагивая исходную работу проекта. Примеры рассчитаны на Git 2.43 и новее; основные команды работают и в более ранних версиях Git 2.x. В конце вы будете знать, где проверить текущую ветку и как не потерять незакоммиченные изменения.
Что понадобится до начала
Нужны установленный Git и папка проекта, в которой уже есть репозиторий. Откройте терминал в этой папке и выполните команды:
git --version
git status
Первая команда покажет версию Git, например git version 2.43.0. Вторая — состояние репозитория. Если вместо этого вы увидели fatal: not a git repository, вы находитесь не в папке репозитория. Перейдите в нужную папку или сначала создайте репозиторий командой git init, если хотите начать новый проект.
Перед работой проверьте вывод git status. Если в нём есть изменённые файлы, разберитесь, кому они принадлежат и нужно ли их сохранить: смена ветки иногда переносит незакоммиченные изменения, а иногда Git остановит переключение, чтобы не затереть работу.
Зачем вообще нужны ветки
Ветка — отдельное имя для линии истории изменений. Обычно проект начинает работу с основной ветки: в разных репозиториях она называется main или master. Для новой функции или исправления создают отдельную ветку. В ней можно менять файлы и делать коммиты, не добавляя незавершённую работу в основную линию проекта.
Ветка не копирует весь проект в отдельную папку. Git хранит историю коммитов, а имя ветки указывает на один из них. Поэтому создание ветки обычно происходит быстро, но изменение файла в рабочей папке всё равно видно Git — сначала важно понять, в какой ветке вы находитесь.
Ветка изолирует историю изменений, а не последствия ваших команд: перед каждым коммитом проверяйте, где вы находитесь и какие файлы собираетесь сохранить.
Коммит1 — сохранённый снимок изменений в истории проекта. Пока вы не создали коммит, новая работа остаётся изменением в рабочей папке, а не частью истории ветки.
Первая ветка: пошаговая инструкция
Посмотрите имя текущей ветки. Выполните
git branch --show-current. Команда выведет имя, напримерmain. Если вывода нет, возможно, репозиторий пока не содержит коммитов или вы находитесь в особом состоянии Git. Проверьте его командойgit status.Создайте и откройте ветку. Имя выбирайте по задаче: например,
fix-headerилиadd-search. Выполните:git checkout -b add-searchЭта команда создаёт ветку и сразу переключает на неё. Проверка: команда
git branch --show-currentдолжна вывестиadd-search. Если Git сообщил, что имя уже занято, выберите другое или проверьте существующие ветки черезgit branch.Внесите изменение и проверьте его. Отредактируйте нужный файл проекта. Затем выполните
git status: изменённый файл должен появиться в списке. Проверьте само изменение командойgit diff— так вы увидите, какие строки добавились и удалились.Подготовьте файл к коммиту. Если хотите сохранить именно этот файл, выполните
git add путь/к/файлу, подставив его настоящий путь. Например, для файлаsrc/search.jsкоманда будет такой:git add src/search.jsПроверьте
git status: файл должен оказаться среди изменений, подготовленных к коммиту. Если команда завершилась сообщениемfatal: pathspec ... did not match any files, проверьте путь и имя файла.Создайте коммит. Выполните
git commit -m "Add search". Короткое сообщение должно описывать изменение, а не просто сообщать, что вы что-то сделали. Проверка: Git выведет информацию о созданном коммите, аgit statusпокажет, что сохранённых изменений больше нет.Вернитесь в основную ветку и объедините работу. Сначала посмотрите её имя командой
git branch: рядом с текущей веткой стоит звёздочка. Если основная ветка называетсяmain, выполните:git checkout main git merge add-searchЕсли у проекта основная ветка называется
master, подставьте это имя вместоmain. Проверка: после слияния командаgit log -1 --onelineпокажет последний коммит, а в выводеgit statusбудет чистая рабочая папка.
Что происходит при слиянии
Команда git merge переносит изменения выбранной ветки в текущую. Поэтому перед слиянием проверьте имя активной ветки: слияние ветки add-search выполняется, когда вы находитесь в main, а не наоборот.
Если в основной ветке после создания вашей ветки никто не менял те же строки, Git часто может объединить историю без ручного вмешательства. Если обе ветки изменили одну и ту же часть файла, возникнет конфликт. Git не выберет правильный вариант за вас: нужно открыть указанные файлы, решить, какой результат должен остаться, сохранить его, затем выполнить git add для исправленного файла и git commit.
Если не получилось
fatal: not a git repository. Терминал открыт не в репозитории. Перейдите в папку проекта; если репозиторий ещё не создан, командаgit initсоздаст его в текущей папке.fatal: a branch named 'add-search' already exists. Такая ветка уже есть. Посмотрите список черезgit branch; если нужно продолжить работу в ней, переключитесь командойgit checkout add-search.Please tell me who you are. Git не знает имя и адрес автора коммитов. Настройте их для текущего репозитория командамиgit config user.name "Ваше имя"иgit config user.email "адрес@example.com". Указывайте свои данные, а не копируйте пример буквально.CONFLICT (content). В обеих ветках изменились пересекающиеся строки. Откройте файл, найдите маркеры конфликта, например<<<<<<<, выберите итоговый вариант и удалите маркеры. Затем добавьте исправленный файл командойgit addи завершите слияние командойgit commit.
Что делать дальше
Перед следующей задачей посмотрите, как ветки названы в вашем проекте, и уточните порядок слияния у команды: основную ветку могут защищать, а изменения принимать только через pull request. Привычка проверять git status до и после каждой операции помогает заметить ошибку раньше, чем она попадёт в общую историю.
Отдельная тема — отправка ветки на удалённый сервер и создание pull request. Для неё сначала проверьте инструкции именно вашего хостинга и проекта: правила доступа и названия веток могут отличаться.
1 Коммит — запись в истории Git с изменениями, автором и сообщением. Он не равен резервной копии проекта: если важна сохранность данных, используйте также резервное копирование.
Документация по командам и веткам: git-branch и git-merge.
Проектная работа: От проблемы до защиты: продукт, этапы, вопросы комиссии
Спросить за 15 ₽Источники: Официальная документация Git: git-branch, Официальная документация Git: git-merge
Частые вопросы
Ветка — это копия проекта?
Можно ли создать ветку, если в проекте ещё нет коммитов?
Что будет с несохранёнными изменениями при переключении ветки?
Обязательно ли сливать ветку сразу после коммита?
Нужно ли удалять ветку после слияния?
Чем отличается git checkout -b от git checkout?
Материал носит информационный характер и подготовлен редакцией «Агентуры». Он не является офертой, рекламой или индивидуальной консультацией. Упомянутые продукты, компании и торговые знаки принадлежат их правообладателям. Перед принятием решений, влекущих юридические или финансовые последствия, обратитесь к профильному специалисту.