Git worktree — это дополнительный рабочий каталог, привязанный к существующему Git-репозиторию. Он имеет собственную извлеченную ветку, свой индекс и собственные неотслеживаемые файлы, но полностью разделяет хранилище объектов (object store), ссылки (refs) и конфигурацию с основным проектом. Для параллельно работающих ИИ-агентов кодинга это идеальная единица изоляции: каждый агент получает каталог, куда гарантированно не пишет никто другой; его коммиты фиксируются на персональной ветке; а создание среды происходит практически мгновенно через команду checkout, вместо медленного клонирования репозитория или запуска тяжелых Docker-контейнеров. В этой статье подробно рассмотрены ключевые команды, преимущества ворктри над общей рабочей директорией, типичные ошибки и то, как Ivy Tendril создает отдельный worktree под каждую задачу и автоматически удаляет его после слияния.
Что представляет собой Git worktree
Каждый Git-репозиторий по умолчанию имеет один рабочий каталог. Команда git worktree add позволяет подключить неограниченное число дополнительных каталогов. Каждый из них является полнофункциональной рабочей средой, где можно перемещаться через cd, редактировать файлы, компилировать проекты и делать коммиты.
# Создание ворктри на уровень выше на новой ветке
git worktree add ../feature-x -b feature-x
# Просмотр всех активных ворктри репозитория
git worktree list
# /Users/dev/app a1b2c3d [main]
# /Users/dev/feature-x a1b2c3d [feature-x]
Созданная директория содержит служебный файл .git (а не каталог). Он указывает на .git/worktrees/feature-x в корневом репозитории, где сохраняются локальный индекс и указатель HEAD. Объекты, ссылки, хуки Git и параметры конфигурации читаются из основного хранилища. Коммит, сделанный в ../feature-x, сразу же отображается в основном каталоге через git log feature-x без необходимости делать push или fetch.
Из этого вытекают два жестких правила: одну и ту же ветку нельзя одновременно извлечь в двух разных ворктри (Git заблокирует такую попытку); каталог ворктри должен располагаться за пределами основного каталога, чтобы не определяться как неотслеживаемые файлы.
Почему worktree превосходит общую рабочую директорию
Агент кодинга читает файлы, вносит правки, запускает скрипты и коммитит. Если два агента делают это в одном каталоге, возникает хаотичный смешанный diff, и тесты не могут изолированно оценить изменения конкретной задачи. Альтернативы — полный клон на каждого агента, отдельный Docker-контейнер или легковесный Git-ворктри.
| Подход | Личное дерево и ветка | Общий пул объектов | Затраты на старт | Изоляция рантайма |
|---|---|---|---|---|
| Общий каталог | Нет | Да | Нулевые | Отсутствует |
| Полный клон на агента | Да | Нет (полная копия) | Долгий клон + установка npm | Отсутствует |
| Контейнер на агента | Да | Нет (если не смонтирован) | Скачивание образа + старт | Полная |
| Git-ворктри на агента | Да | Да | Мгновенный checkout | Отсутствует |
Ворктри предоставляет агенту всё необходимое для корректной работы (изолированное дерево файлов и выделенную ветку) без тяжеловесных накладных расходов на виртуализацию ОС. Благодаря общему пулу объектов добавление ворктри в проекте с десятилетней историей обходится лишь извлечением текущего состояния. Кэши пакетных менеджеров (pnpm, Cargo, NuGet) остаются общими на уровне профиля пользователя.
Docker-контейнеры незаменимы, когда агенты должны устанавливать системные утилиты или открывать сетевые порты. Эти подходы легко объединяются: ворктри можно смонтировать прямо в контейнер. Для типового цикла «правка — тест — линтер — коммит» возможностей Git worktree хватает с избытком.
Читайте также паттерны оркестрации агентов для понимания комплексной структуры управления процессами.
Типичные ошибки и как их избежать
Ворктри надежно решают проблему конфликта файлов, но требуют соблюдения трех инженерных правил.
1. Два агента редактируют одинаковые файлы на разных ветках
Ворктри изолирует каталоги на диске, но не намерения разработчиков. Если две задачи одновременно затрагивают auth/session.ts, обе ветки успешно зафиксируют изменения, но вторая ветка при слиянии столкнется с merge-конфликтом. Решение должно приниматься на этапе планирования: заранее анализируйте список затрагиваемых файлов, запускайте зависимые планы последовательно либо дробите задачи так, чтобы за модуль отвечал ровно один агент.
2. Засоренные каталоги (Dirty Trees)
Если агент аварийно завершился или тесты сгенерировали временные файлы, в ворктри остаются незакоммиченные изменения. Команда git worktree remove обоснованно блокирует удаление таких папок. Грамотный оркестратор фиксирует все оставшиеся файлы коммитом на ветке агента (чтобы ревьюер не потерял контекст) и лишь затем уничтожает каталог.
# Проверить наличие незакоммиченных файлов
git -C ../feature-x status --short
# Удалить чистый ворктри
git worktree remove ../feature-x
# Принудительное удаление после проверки
git worktree remove --force ../feature-x
3. Накопление забытых ворктри
Ворктри, созданные разработчиками вручную, быстро накапливаются, блокируя ветки и отнимая место на диске. Если удалить каталог через rm -rf вместо git worktree remove, Git сохранит недействительные ссылки в .git/worktrees/.
# Предварительный просмотр очистки
git worktree prune --dry-run --verbose
# Физическая очистка устаревших ссылок
git worktree prune
Главное правило: система, которая создала ворктри, обязана автоматически удалить его на строго определенном этапе жизненного цикла задачи.
Как Ivy Tendril управляет ворктри
Ivy Tendril — локальное десктопное приложение (macOS, Windows, Linux), управляющее ИИ-агентами от этапа постановки задачи до проверенного pull request'а. Ворктри выступают его базовой единицей исполнения. Изучите обзор продукта и описание жизненного цикла.
- Один ворктри на каждый план: При подтверждении задачи Tendril автоматически инициализирует отдельный ворктри и ветку. Десятки агентов работают параллельно, а основная ветка (main) остается полностью нетронутой.
- Изолированная верификация: Тесты, линтеры и расчет diff происходят строго внутри дерева задачи. Окно Review показывает diff рядом с отчетами о тестировании.
- Автоматическая уборка: После слияния PR в репозитории GitHub Tendril без участия человека удаляет ворктри.
- Свобода выбора агентов: Внутри ворктри можно запустить Claude Code, OpenAI Codex CLI, Copilot CLI, Gemini CLI или OpenCode.
- Полная локальность: Исходный код, планы и логи остаются на вашем компьютере. См. local-first подход к ИИ-разработке.
Начните параллельную разработку с Ivy Tendril
Оцените мощь изолированных Git worktrees в связке с передовыми агентами:
- Исходный код проекта: Откройте Ivy Tendril на GitHub (open source).
- Технические руководства: Изучайте статьи на tendril.ivy.app.
- Связь с командой: Напишите на renco@ivy.app, чтобы согласовать 30-минутную сессию по архитектуре решений.