index / guides / git-worktree-vibe-coding

Git workflow в контексте вайб-кодинга

Почему ветки ломаются, когда код пишут сразу три агента, и как worktree превращает параллельную разработку из хаоса в конвейер. Разбор с примерами и best practices.

Git Worktree vs Branch: секретное оружие вайб-кодинга с AI-агентами

Классическая модель git была придумана для одного разработчика, который пишет одну задачу в одной папке. В 2026 году этот сценарий мёртв. Рядом с тобой работают три AI-агента, каждый пилит свою фичу, и все хотят писать в src/ одновременно.

Если ты всё ещё жонглируешь git stash и git checkout — ты работаешь не с git, а против него. Пора познакомиться с worktree.


Branch — это закладка. Worktree — это комната

Первое, что путают новички: ветка и worktree — это не одно и то же.

BRANCH  ──  указатель на коммит в истории
            существует внутри .git/
            одна ветка = одна закладка

WORKTREE ──  физическая папка на диске
            привязана к ветке
            одна worktree = одна рабочая копия файлов

Когда ты делаешь git checkout feature-x, git перезаписывает файлы в твоей единственной рабочей папке. Вся мебель в комнате исчезает и появляется заново. Если у тебя были незакоммиченные изменения — беги стэшить, пока не поздно.

Worktree решает это радикально: новая папка на диске для каждой ветки. Ты работаешь в feature-x/ и hotfix-y/ одновременно, как будто у тебя два клона репозитория. Только это не клон — объекты git шарятся, на диске лежит только разница.


Почему это важно для вайб-кодинга

Представь реальный сценарий 2026 года:

  • Агент №1 рефакторит авторизацию в src/auth/
  • Агент №2 добавляет новую страницу в src/pages/
  • Агент №3 чинит баг в тестах
  • Ты сам правишь CSS

Если все сидят в одной папке — это катастрофа. Агент №1 переименовывает функцию, агент №2 читает её старое имя, тесты падают у всех. Один git checkout стирает работу другого.

С worktree каждый получает изолированную песочницу:

NoAiWeb/                    ← твой main
.claude/worktrees/
  ├── auth-refactor/        ← агент №1, ветка feature/auth
  ├── new-page/             ← агент №2, ветка feature/page
  └── test-fix/             ← агент №3, ветка fix/tests

Каждая папка — полноценный checkout. Свой node_modules, свой dev-сервер на своём порту, свои незакоммиченные изменения. Никто никому не мешает.

Именно поэтому Claude Code с флагом -w автоматически создаёт worktree для агента. И именно поэтому ты видишь папки типа .claude/worktrees/vigilant-bose-3d9ad1/ после сессий.


Команды, которые нужно знать

Всего пять. Больше не понадобится.

# создать worktree с новой веткой
git worktree add ../feature-x -b feature/x

# создать worktree из существующей ветки
git worktree add ../hotfix hotfix/payment

# посмотреть все worktree
git worktree list

# удалить worktree (папку)
git worktree remove ../feature-x

# подчистить мёртвые ссылки после ручного удаления папки
git worktree prune

Главное правило: одна ветка = одна worktree. Git не даст одновременно checkout одной ветки в двух местах — это защита от гонок.


Best Practices для AI-воркфлоу

1. Два-три агента — потолок

Запускать пятерых агентов параллельно звучит круто, пока ты не пытаешься отслеживать, что они наворотили. Практика: 2–3 сессии — максимум, который человек способен мониторить. Больше — и ты просто мёрджишь мусор.

2. Скоупь задачи так, чтобы файлы не пересекались

Главный источник боли — мёрдж-конфликты между worktree’ами. Если агент №1 и агент №2 оба трогают Layout.astro, ты сам себе создал проблему. Давай агентам непересекающиеся зоны: один работает в src/auth/, другой в src/pages/. Конфликтов не будет.

3. Общий контекст → CLAUDE.md. Задача → в промпт

CLAUDE.md в корне репозитория читают все worktree — это общий источник правды о проекте. Туда кладут конвенции, стек, архитектуру. А специфичная задача конкретной сессии идёт в стартовый промпт агента. Не смешивай.

4. Запускай /init в каждой новой worktree

Новый worktree = новая сессия агента. Даже если это тот же репозиторий, сессия не знает, что ты делал в другой папке. /init заставляет Claude перечитать CLAUDE.md и сориентироваться.

5. .env не копируется — используй .worktreeinclude

Worktree — это свежий checkout. Файлы, которые в .gitignore (типа .env.local), не попадают в новую папку. Агент запускает npm run dev — падает, потому что нет ключей.

Решение: файл .worktreeinclude в корне проекта. Синтаксис как у .gitignore:

.env
.env.local
.vscode/settings.json

Claude Code при создании worktree скопирует эти файлы автоматически. Работает только для gitignored файлов — отслеживаемые не дублируются.

6. Добавь .claude/worktrees/ в .gitignore

Иначе в git status основного репозитория будут светиться сотни чужих файлов. Одна строчка — и порядок:

.claude/worktrees/

7. Workflow: Explore → Plan → Code → Commit

Даже с изоляцией не давай агенту кодить с ходу. Сначала изучить кодовую базу, потом составить план, показать его тебе, и только потом писать. Это базовая практика Claude Code, и в worktree-режиме она критична: ошибка в изолированной песочнице всё равно мёрджится в main.

8. Чисти worktree после мёрджа

Отработанный worktree — это кладбище из node_modules на несколько гигабайт. После мёрджа PR:

git worktree remove .claude/worktrees/feature-x
git branch -d feature/x

Или одной строкой на всё заброшенное: git worktree prune.


Когда worktree не нужен

Не молоток для каждого гвоздя.

  • Задача на 10 минут. git stash && git checkout быстрее, чем создавать worktree, ставить зависимости и запускать сервер на новом порту.
  • У тебя один агент и одна задача. Изоляция решает проблему, которой у тебя нет.
  • Монорепо с тяжёлыми зависимостями. Каждый worktree — это отдельный node_modules. Если у тебя проект на 3 ГБ, пять worktree’ов съедят 15 ГБ диска и пол-ноута RAM на запущенных dev-серверах.

Итог

Ветка — это закладка в истории. Worktree — физическая рабочая копия на диске. До AI-агентов разница была академической: один разработчик, один контекст, git checkout хватало. Сейчас — нет.

Если ты хочешь, чтобы Claude, Codex и Cursor работали одновременно и не затирали друг друга — worktree не опция, а инфраструктура. Настрой .worktreeinclude, добавь .claude/worktrees/ в .gitignore, держи 2–3 агента максимум, и забудь про git stash как про страшный сон.

Git наконец-то стал готов к тому, что разработчик — это не один человек.


Источники