Якщо в одному репозиторії у вас працює більше ніж один агент, вам потрібні git worktree. Вони дають кожному агенту власну гілку у власній теці, щоб усі працювали одночасно й не наступали один одному на п’яти.
Що таке git worktree?
Звичайний клон має одне робоче дерево: одна тека, одна гілка в checkout. 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 не з’являлися як untracked в основному checkout. - У репозиторії має бути хоча б один коміт.
- Коли ви виходите, 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і локальні налаштування зазвичай в ігнорі git, тож скопіюйте те, що потрібно для запуску застосунку. З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». Гілку можна мати в checkout лише в одному worktree одночасно. Створюйте нову гілку для кожного worktree.
- Забуті worktree. Старі worktree тримають гілки живими й займають місце на диску. Час від часу виконуйте
git worktree list. - Незакомічені зміни під час видалення.
git worktree removeвідмовляється працювати, якщо у worktree є зміни. Спершу закомітьте або сховайте їх у stash, або додайте--force, якщо справді хочете їх викинути. - Агенти редагують основну теку. Запускайте кожного агента зсередини його теки worktree, а не з кореня репозиторію.
Worktree у Vibe Console
Vibe Console тримає worktree на виду, поки в них працюють агенти:
- Вкладка Worktrees у керуванні кодом (⌘⇧G) показує кожен worktree з його гілкою, позначаючи основний і всі detached checkout.
- Перетягніть worktree на термінал, щоб вставити його шлях, а потім запустіть там агента через ⌘K.
- Вилучити worktree прибирає його, коли робота завершена, і запитує Вилучити примусово, якщо в ньому ще є локальні зміни. Основний worktree захищено.
- Сітка вміщає до дев’яти терміналів, тож агент кожного worktree може мати власну панель. Див. паралельний запуск агентів.
Створюйте worktree через git worktree add або claude --worktree, як показано вище; обидва варіанти одразу з’являються в списку.
Часті запитання
Чи займають worktree багато місця на диску?
Лише під файли в checkout і те, що ви в них встановите. Історія git спільна.
Що краще: worktree чи окремі клони?
Worktree. Вони ділять одну історію, тож гілки й коміти миттєво доступні всюди, а прибирання — одна команда.
Чи можуть два агенти ділити один worktree?
Лише якщо файли редагує щонайбільше один із них. Агент-рецензент, який тільки читає, може ділити worktree з агентом, що пише код.
Спробуйте безкоштовно 14 днів: завантажити Vibe Console.
