К основному содержимому
Vibe Console

Git worktree для Claude Code и Codex: практический гайд

Как с помощью git worktree запускать Claude Code, Codex и других ИИ-агентов на разных ветках одновременно и без конфликтов: команды, настройка, грабли и уборка.

Nes

Nes

@nesdesignco

· 4 мин чтения

Схема основной ветки с двумя git worktree: в ../atlas-auth работает Claude Code, в ../atlas-search — Codex

Если на одном репозитории у вас работает больше одного агента, вам нужен 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.

Соберите всех агентов в одном окне.

14 дней бесплатно. Дальше $4.99 в месяц или $39.99 в год.