Если на одном репозитории у вас работает больше одного агента, вам нужен git worktree. Он позволяет каждому агенту работать на своей ветке, в своей папке и одновременно с остальными, не наступая им на ноги.
Что такое git worktree
У обычного клона одно рабочее дерево: одна папка, одна выбранная ветка. Worktree — это дополнительная рабочая папка, привязанная к тому же репозиторию, но с другой веткой. Все worktree делят одну историю .git, поэтому коммит, сделанный в любом из них, сразу виден в остальных, а вот файлы у каждого свои.
Для агентов это значит:
- Claude Code правит файлы в
../atlas-authна веткеfeat/auth - Codex правит файлы в
../atlas-searchна веткеfeat/search - Вы продолжаете ревьюить и запускать приложение в основной папке на
main
Никто не затирает чужие изменения.
Worktree на каждую задачу
Из основной папки репозитория:
# new branch + new folder next to the repo
git worktree add ../atlas-auth -b feat/auth
# another one, starting from a specific branch
git worktree add ../atlas-search -b feat/search origin/main
# see them all
git worktree listЗатем запустите агента в каждой папке:
cd ../atlas-auth && claude
cd ../atlas-search && codexНазывайте папки worktree по задачам. Через месяц atlas-auth вам о чём-то скажет, а wt2 — нет.
Или пусть worktree создаст Claude Code
Свежие версии Claude Code умеют создавать worktree сами:
claude --worktree feature-auth # or: claude -w feature-authКоманда создаёт worktree в .claude/worktrees/feature-auth/ на новой ветке worktree-feature-auth и запускает в нём Claude. Запустите её ещё раз с другим именем во втором терминале — получите вторую изолированную сессию. Можно и посреди сессии попросить Claude «work in a worktree».
Несколько деталей из документации Claude Code по worktree:
- Добавьте
.claude/worktrees/в.gitignore, чтобы файлы worktree не появлялись как неотслеживаемые в основной копии. - В репозитории должен быть хотя бы один коммит.
- При выходе Claude удаляет чистый worktree (для именованного сначала спрашивает) и уточняет, оставить ли worktree, в котором ещё есть изменения.
- Файл
.worktreeincludeперечисляет игнорируемые git файлы, например.env, которые нужно копировать в каждый новый worktree.
Используйте claude --worktree, когда над задачей работает только Claude Code. Обычный git worktree add подойдёт, если хотите сами выбрать папку и имя ветки или запустить в worktree Codex или другого агента.
Подготовьте worktree до запуска агента
В новом worktree есть только файлы, которые отслеживает git. Прежде чем отдать его агенту:
- Установите зависимости.
node_modules, виртуальные окружения и папки сборки не общие. Выполнитеnpm install(или аналог) в каждом worktree. Менеджеры пакетов с общим хранилищем, например pnpm, делают это быстро. - Скопируйте неотслеживаемые конфиги. Файлы
.envи локальные настройки обычно в.gitignore, так что скопируйте то, без чего приложение не запустится. Сclaude --worktreeвместо этого перечислите их в.worktreeinclude. - Разведите порты. Два dev-сервера не могут слушать порт 3000 одновременно. Второй запустите на другом порту, например
PORT=3001 npm run dev. - Передавайте инструкции через отслеживаемые файлы.
CLAUDE.mdиAGENTS.mdлежат в git, так что каждый worktree получает их автоматически.
Ревью, слияние и уборка
Когда агент закончил:
# in the worktree: check the work
git diff main...feat/auth
npm test
# in the main folder: merge
git merge feat/auth
# remove the worktree folder and its registration
git worktree remove ../atlas-auth
git branch -d feat/authЕсли вы удалили папку worktree вручную, выполните git worktree prune, чтобы убрать устаревшую запись.
Частые грабли
- «Branch is already checked out». Ветка может быть выбрана только в одном worktree одновременно. Создавайте для каждого worktree новую ветку.
- Забытые worktree. Старые worktree держат ветки и занимают место на диске. Время от времени запускайте
git worktree list. - Незакоммиченные изменения при удалении.
git worktree removeоткажется работать, если в worktree есть изменения. Сначала сделайте коммит или stash, либо используйте--force, если действительно хотите их выбросить. - Агенты правят основную папку. Запускайте каждого агента изнутри папки его worktree, а не из корня репозитория.
Worktree в Vibe Console
Vibe Console держит worktree на виду, пока в них работают агенты:
- Вкладка Worktrees в панели управления исходным кодом (⌘⇧G) показывает все worktree с их ветками, отмечая основной и все копии в состоянии detached.
- Перетащите worktree в терминал, чтобы вставить его путь, и запустите там агента по ⌘K.
- Удалить worktree убирает его, когда работа закончена, а если в нём остались локальные изменения, попросит Удалить принудительно. Основной worktree защищён.
- Сетка показывает до девяти терминалов, так что у агента каждого worktree может быть своя панель. См. статью о параллельных агентах.
Создавайте worktree через git worktree add или claude --worktree, как показано выше; оба сразу появятся в списке.
Частые вопросы
Много ли места занимают worktree?
Только под выбранные файлы и всё, что вы в них установите. История git общая.
Что лучше: worktree или отдельные клоны?
Worktree. История одна, поэтому ветки и коммиты сразу доступны везде, а уборка — одна команда.
Могут ли два агента делить один worktree?
Только если файлы правит максимум один из них. Ревьюер, который только читает, может работать в одном worktree с агентом, пишущим код.
Попробуйте бесплатно 14 дней: скачать Vibe Console.
