Что такое ветка в Git — и почему это не копия твоих файлов

Новички представляют ветку в Git так: «это копия всей папки с кодом, где я могу ломать, не трогая оригинал». Интуиция почти верная по ощущениям — но неверная по устройству. И как раз из-за этого ветки кажутся тяжёлыми и страшными. На самом деле ветка — это крошечная закладка, а не копия файлов.
Что такое ветка простыми словами
Ветка — это отдельная линия работы. Ты берёшь код в текущем состоянии, «отпочковываешься» и делаешь свои изменения, не задевая основную линию (обычно она называется main). Наигрался — сливаешь ветку обратно или выкидываешь.
Аналогия: пишешь книгу и хочешь попробовать другую концовку. Ты не переписываешь весь черновик — делаешь пометку «отсюда пробую по-новому». Не понравилось — вернулся к пометке, будто ничего и не было. Ветка — эта самая пометка.
Почему ветка — это указатель, а не копия
Вот неожиданное. Ветка в Git — это буквально один файл с одной строчкой: именем и хешем коммита, на который она смотрит. Сорок байт. Никакого дублирования кода — Git хранит историю один раз, а ветка просто показывает пальцем: «я вот на этом коммите».
Поэтому создать ветку — мгновенно, хоть сто штук. Ты не копируешь гигабайты, ты ставишь ещё одну закладку. Когда делаешь коммит, находясь на ветке, закладка сдвигается вперёд, на новый коммит. Вот и весь секрет — понимание этого разом убирает страх «а вдруг я что-то сломаю созданием ветки».
Зачем тебе ветки — даже соло
Кажется, что ветки нужны только командам, где все пишут одновременно. Но и в одиночку они — твоя страховочная сетка:
mainвсегда рабочий. Экспериментируешь в ветке — основная версия остаётся целой. Сломал что-то — просто выкинул ветку.- Одна ветка — одна задача. «Добавляю тёмную тему» в одной ветке, «чиню баг входа» в другой. Не мешаются.
- Основа для pull request. Чтобы предложить изменения к проверке, их сначала кладут в ветку — pull request как раз просит влить одну ветку в другую.
Многие ИИ-агенты по умолчанию работают именно так: заводят ветку под каждую задачу, чтобы твой рабочий код всегда оставался цел.
Как это выглядит на практике
Три команды покрывают 90% жизни с ветками:
git switch -c dark-mode— создать веткуdark-modeи переключиться на неё.git switch main— вернуться на основную ветку.git merge dark-mode— влить готовую работу изdark-modeв текущую ветку.
Всё это и ещё пяток команд — в шпаргалке команды Git для новичка. А если запутался или коммит ушёл не туда — есть отдельный разбор, как отменить коммит.
Вопрос: чем ветка отличается от коммита?
Коммит — это зафиксированный снимок кода в момент времени, звено в цепочке истории. Ветка — подвижная закладка, которая показывает на последний коммит своей линии. Коммит остаётся на месте навсегда; ветка едет вперёд с каждым новым коммитом.
Вопрос: сколько веток можно держать?
Сколько угодно — они почти ничего не весят. На практике удобно держать одну долгоживущую (main) и заводить короткие ветки под конкретные задачи, сливая и удаляя их по мере готовности. Гора заброшенных веток не сломает проект, но захламляет — так что доделал, слил, удалил.
Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.





