Git worktree в Claude Code: параллельные агенты и 3 сессии сразу в 2026
Как запустить несколько сессий Claude Code параллельно и не поломать код. Флаг --worktree разводит каждую сессию по отдельной папке и ветке за одну команду: одна сессия пишет фичу, вторая чинит баг, файлы не пересекаются.
Запустить три сессии Claude Code параллельно и не поломать код можно за пару минут. Команда claude --worktree feature-auth создаёт отдельную папку в .claude/worktrees/, заводит новую ветку git и стартует Claude Code прямо в ней. Открываешь второй терминал, повторяешь с другим именем - получаешь вторую сессию с другими файлами на диске. Одна пишет авторизацию, вторая чинит падающий тест, и они физически не могут друг другу мешать.
Это базовый навык вайб-кодинга образца 2026 года. ИИ-агенты пишут код быстрее, чем человек успевает следить, кто какой файл трогает. Ниже разберём по шагам: чем worktree отличается от обычной ветки, как поднять первую параллельную сессию, как перенести секреты в новую папку, как изолировать субагентов и по какому правилу выбирать между worktree, фоновой сессией и субагентом. Всё делается командами на русском в Claude Code, руками код не пишешь.
Git worktree - это отдельная рабочая папка для другой ветки того же репозитория. Команда `claude --worktree name` создаёт её в `.claude/worktrees/name/`, заводит ветку и запускает Claude Code внутри. Два терминала дают две сессии, разные файлы на диске, нулевую интерференцию. Работает из коробки в Claude Code v2.0+, секреты переносятся через `.worktreeinclude`, базовая ветка выбирается через `worktree.baseRef`.
флаг --worktree делает git worktree add, cd и запуск разом
комфортный потолок параллельно, больше не тянет память разработчика
через столько фоновая уборка сносит чистые worktree субагентов и /bg
Зачем вайб-кодеру параллельные сессии Claude Code
Представь типичную боль на скорости 2026 года. Ты вайб-кодишь два дня, ничего не коммитишь, накопил огромные изменения. Запустил несколько агентов параллельно в одной папке. Они начали переписывать друг друга: первый написал код, второй его снёс и положил сверху свой, а работа первого не сохранилась. На выходе билиберда, два дня в мусор.
Без изоляции файлов запуск двух параллельных сессий Claude Code в одной директории кончается именно так: одна сессия перезаписывает работу другой. Агенты не знают про соседа и спокойно правят одни и те же файлы.
Git worktree решает это на уровне файловой системы. У тебя одна основная папка, где ты работаешь. Команда claude --worktree feature-auth создаёт папку .claude/worktrees/feature-auth/ на отдельной ветке и стартует Claude Code в ней. Файлы изолированы. Правки одной сессии не видны другой, пока ты сам не сделаешь явный merge.
В официальной документации Anthropic это сформулировано прямо.
Запуск каждой сессии Claude Code в своём worktree означает, что правки в одной сессии никогда не касаются файлов в другой. Можно собирать фичу в одном терминале и чинить баг во втором.
- Anthropic Docs, Run parallel sessions with worktrees
Быстрая самопроверка: если ты хоть раз получал коммит, в котором половина файлов - чужая работа, тебе нужен worktree. Это верный признак, что две сессии наступили друг другу на одни и те же файлы.
Чем git worktree отличается от обычной ветки
Обычная git checkout переключает рабочую копию в той же папке. Старые файлы исчезают с диска до момента, пока ты не вернёшься на ветку. git worktree add создаёт вторую папку для другой ветки рядом с первой. Обе ветки живут на диске одновременно, между ними переходишь простым cd. Под капотом один .git репозиторий, общая история, общий remote. Просто несколько рабочих копий.
Как выглядит стандартный git-флоу. Ты на ветке main, делаешь git checkout feature-x, и Git перезаписывает файлы рабочей копии. Запущенный npm run dev ломается, потому что package.json поменялся прямо под ним. Стэшишь незакоммиченные изменения, ждёшь, пока редактор переиндексирует проект. Переключаешься обратно - снова всё переписывается, снова git stash pop. Каждое переключение стоит времени.
Worktree даёт второй вариант. Вместо того чтобы гонять одну папку между ветками, ты заводишь вторую папку под другую ветку. Команда git worktree add ../project-feature-x feature-x создаёт директорию ../project-feature-x/ с файлами ветки feature-x. Твой main остаётся в исходной папке, dev-сервер продолжает жить.
Разница по пунктам:
| Параметр | git checkout ветка | git worktree add |
|---|---|---|
| Файлы рабочей копии | Перезаписываются на месте | Появляются в новой папке |
| Работа на двух ветках сразу | Невозможна | Возможна |
| Незакоммиченные изменения | Нужен git stash | Ничего делать не надо |
| Скорость переключения | Зависит от размера дельты | Просто cd |
| Место на диске | Одна копия | По копии файлов на каждую ветку |
Раньше worktree-режим в Claude Code приходилось готовить руками: git worktree add, потом cd, потом claude, и так в каждом терминале. Флаг --worktree (он же -w) делает эти три действия одной командой.
Как запустить первую параллельную сессию: флаг —worktree
Команда claude --worktree feature-auth создаёт worktree в .claude/worktrees/feature-auth/, заводит ветку worktree-feature-auth от origin/HEAD и стартует Claude Code прямо в ней. Никаких ручных git worktree add и cd. В соседнем терминале повторяешь с другим именем - получаешь две независимые сессии. Имя можно не указывать, тогда Claude сам придумает случайное вроде bright-running-fox.
Минимальный пример. Открываешь первый терминал в корне проекта:
claude --worktree feature-auth
Claude Code делает три вещи. Создаёт папку .claude/worktrees/feature-auth/ со снимком origin/HEAD (обычно это твоя ветка по умолчанию). Заводит новую ветку worktree-feature-auth. Стартует сессию в этой папке.
Открываешь второй терминал в той же корневой папке репозитория:
claude --worktree bugfix-123
Готово. Две сессии Claude Code, разные файлы на диске, разные ветки git. Пока в первой ты пишешь авторизацию, а во второй чинишь падающий тест, они не пересекаются на диске.
Если имя писать лень, Claude придумает сам:
claude --worktree
# создаст что-то вроде .claude/worktrees/bright-running-fox/
Совет для тех, кто с git недавно: положи .claude/worktrees/ в .gitignore. Иначе при git status в основной папке ты увидишь содержимое всех worktree как untracked-файлы.
# .gitignore
.claude/worktrees/
Перед первым запуском `--worktree` в новой директории зайди туда обычным `claude` без флага и прими диалог доверия к папке (workspace trust). Если этого не сделать, флаг падает с ошибкой про «trust not accepted», в том числе когда комбинируешь его с `-p` для headless-режима. Сделано специально, чтобы Claude не получил доступ к чужому проекту без твоего согласия.
Где лежат worktree и как их найти
По умолчанию все worktree складываются в .claude/worktrees/<name>/ рядом с корнем репозитория. Посмотреть список - git worktree list. Попасть в worktree руками - cd .claude/worktrees/feature-auth. Переключиться внутри сессии Claude - попроси словами «перейди в другой worktree», он использует встроенный инструмент EnterWorktree. Старый worktree при этом остаётся на диске нетронутым.
Базовое место - константа: .claude/worktrees/<value>/ в корне репозитория. Если проект лежит в ~/dev/my-app/, то worktree feature-auth окажется в ~/dev/my-app/.claude/worktrees/feature-auth/.
Внутри одной сессии Claude можно перейти в другой существующий worktree. Просто скажи в чате: «перейди в .claude/worktrees/bugfix-123», и Claude вызовет инструмент EnterWorktree. Текущая папка останется на месте, вернуться назад можно тем же способом.
Полный список всех worktree, включая основной и созданные вручную, показывает стандартная команда git:
git worktree list
Вывод будет такого вида:
/home/user/dev/my-app abc1234 [main]
/home/user/dev/my-app/.claude/worktrees/feature-auth def5678 [worktree-feature-auth]
/home/user/dev/my-app/.claude/worktrees/bugfix-123 9876fed [worktree-bugfix-123]
Параллельные сессии проще осваивать на живом проекте, который ты собрал сам. Пройди мини-курс «Claude за вечер»: от установки до первых результатов на твоих задачах, чтобы дойти до worktree и агентов без страха перед кодом.
Пройти мини-курс →Как перенести .env и секреты в worktree: файл .worktreeinclude
Worktree - это свежий чекаут. Файлы из .gitignore (.env, .env.local, локальные конфиги) в новой папке отсутствуют. Без них npm run dev или prisma db push не поднимутся. Файл .worktreeinclude в корне проекта использует синтаксис .gitignore и говорит Claude Code, что копировать в каждый новый worktree автоматически. Подхватывается при --worktree, при worktree для субагентов и при сессиях desktop-приложения.
Когда --worktree создаёт новую папку, туда попадает только то, что коммитится в Git. Файл .env с API-ключами и .env.local с локальной конфигурацией лежат в .gitignore, поэтому в worktree их нет. И первый же npm run dev падает с ошибкой вроде «MISSING DATABASE_URL».
Самописный вариант - копировать .env руками после каждого --worktree. Срабатывает один раз, потом про это забываешь. Решение от Anthropic - файл .worktreeinclude в корне проекта со списком gitignored-файлов, которые надо копировать в каждый новый worktree.
Создаёшь в корне репозитория файл .worktreeinclude:
.env
.env.local
config/secrets.json
Синтаксис тот же, что у .gitignore. Можно использовать glob-паттерны:
.env*
*.local
config/*.json
.vscode/settings.json
У Anthropic есть чёткое правило, которое защищает от случайностей.
Файл использует синтаксис gitignore. Копируются только те файлы, которые подпадают под паттерн и при этом находятся в gitignore. Файлы, отслеживаемые git, не дублируются никогда.
- Anthropic Docs, Run parallel sessions with worktrees
То есть случайно скопировать package.json через .worktreeinclude не получится - он не в gitignore. Класть туда любые паттерны безопасно.
Один и тот же `.worktreeinclude` работает сразу в трёх режимах: при ручном `--worktree`, при автоматических worktree для субагентов и при сессиях из desktop-приложения Claude. Настроил один раз в корне проекта - секреты подтягиваются во все новые папки. Проверь, что файл лежит именно в корне репо; внутри `.claude/` он не сработает.
Worktree от пул-реквеста для код-ревью
Команда claude --worktree "#1234" фетчит pull request №1234 из origin и создаёт worktree в .claude/worktrees/pr-1234/ с веткой этого PR. Можно скормить и полный URL. Удобно для код-ревью: открываешь чужой PR в своей папке, Claude прогоняет тесты, читает логи, пишет замечания, а основной репозиторий в это время нетронут.
Стандартный сценарий ревью: коллега прислал PR, надо посмотреть код, запустить тесты, оставить комментарий. С обычным git checkout pull/1234/head ты опять переключаешь рабочую копию и ломаешь свою активную сессию.
С флагом --worktree это одна команда:
claude --worktree "#1234"
Что происходит под капотом: Claude Code делает git fetch origin pull/1234/head, создаёт worktree в .claude/worktrees/pr-1234/, чекает ветку PR и стартует сессию. Дальше можно сразу попросить «прочитай diff, прогони тесты, найди логические ошибки». Пока Claude работает, твоя основная сессия на main продолжает жить.
Есть альтернативный синтаксис - полный URL пул-реквеста:
claude --worktree https://github.com/anthropics/claude-code/pull/1234
В реальном проекте связка claude --worktree "#N" плюс кастомный субагент-ревьюер даёт автоматический разбор PR за минуту-две. Запускаешь его в фоне, в основном окне продолжаешь свою работу, возвращаешься к результату через список агентов. Как собирать таких субагентов под свои задачи - в разборе агенты Claude для новичка.
Базовая ветка: worktree.baseRef на fresh или head
По умолчанию worktree ответвляется от origin/HEAD - последний синканный с remote коммит. Это безопасный чистый старт. Если хочешь, чтобы новый worktree забирал твои локальные незапушенные коммиты и WIP-правки, поставь в настройках worktree.baseRef: "head". Пригодится, когда субагент должен работать поверх твоей текущей фичи, не уходя на main. Значений всего два: fresh или head, произвольные ссылки не поддерживаются.
Настройка по умолчанию: каждый новый worktree стартует от origin/HEAD. Плюс - чистый старт, он гарантированно совпадает с тем, что увидит CI. Минус - если на текущей ветке у тебя есть незакоммиченные изменения или несколько локальных коммитов сверх remote, в новый worktree они не попадут.
Чтобы worktree наследовал твоё локальное состояние, добавь в .claude/settings.json (или в глобальный settings):
{
"worktree": {
"baseRef": "head"
}
}
Теперь claude --worktree experimental-feature стартует от текущего локального HEAD. Это выручает в одном конкретном сценарии: ты пишешь крупную фичу, она ещё не зафиксирована, и надо запустить субагента, чтобы исследовать смежный модуль. Но субагенту нужно видеть твои in-progress изменения, иначе он не поймёт текущей структуры кода.
Настройка принимает ровно два значения: fresh (равно origin/HEAD) и head (равно локальный HEAD). Никаких произвольных ссылок вроде feature-branch или хэша коммита. Это сознательное ограничение, чтобы не плодить комбинаторный взрыв вариантов.
Как изолировать субагентов автоматически: isolation worktree
Субагент в Claude Code - это специализированный агент под одну задачу: код-ревью, рефакторинг, поиск. Если запускаешь несколько субагентов параллельно из одной сессии, по умолчанию они работают в одной папке и могут переписать файлы друг друга. Добавляешь isolation: worktree в frontmatter субагента - каждому даётся временный worktree, который аккуратно удаляется в конце, если субагент ничего не закоммитил.
Разведём два понятия, которые часто путают. Субагенты - это когда параллельно запускаются агенты, которые пишут код. Рутины - это процесс их старта, то есть когда и по какому условию этих агентов запускать. Здесь речь про первое.
Когда ты говоришь Claude «запусти три субагента: один читает базу, второй смотрит API, третий проверяет тесты», все три по умолчанию работают в твоей рабочей копии. Если хотя бы двое одновременно пишут в один файл - конфликт. Решение - выдать каждому собственный worktree автоматически.
Способ 1 - попросить словами. В диалоге пишешь Claude:
Используй worktrees для своих агентов.
Claude применит изоляцию ко всем последующим субагентам в этой сессии.
Способ 2 - жёстко прописать в самом субагенте. В файле субагента (например .claude/agents/code-reviewer.md) добавляешь поле в frontmatter:
---
name: code-reviewer
description: Читает diff и пишет замечания по коду
isolation: worktree
---
Ты внимательный ревьюер. Читай diff, ищи логические ошибки...
Теперь каждый запуск этого субагента получает временный worktree в .claude/worktrees/. Если субагент ничего не записал, папка удаляется сама по завершении. Если остались незакоммиченные изменения, Claude спросит, оставить или удалить.
Базовая ветка для субагентских worktree - та же, что у --worktree: по умолчанию origin/HEAD, а при worktree.baseRef: head - локальный HEAD. Как разложить работу на целый рой параллельных агентов, разбираем в отдельном гайде: рой агентов Claude через RuFlow.
Что выбрать: worktree, фоновая сессия, субагент или дашборд
Есть четыре механизма Claude Code, которые постоянно путают между собой. Worktree изолирует файлы на диске. Фоновая сессия (/bg) изолирует контекст и токены. Субагент изолирует задачу, промпт и набор инструментов. Дашборд агентов - это просто UI, где видно все сессии сразу. Их можно комбинировать: /bg создаёт worktree под капотом, субагент с isolation: worktree стартует во временном worktree, а дашборд показывает всё это строками в одном списке.
| Инструмент | Что изолирует | Когда применять |
|---|---|---|
claude --worktree <name> | Файлы: отдельная папка и ветка | Держишь N сессий параллельно руками в разных терминалах |
/bg (или Ctrl+B) | Контекст и токены | Длинная задача, не хочешь блокировать текущее окно, worktree создаётся сам |
Субагент с isolation: worktree | Файлы внутри одной сессии | Один промпт раздаёт работу N агентам, нужна защита от взаимных перезаписей |
| Дашборд агентов | Ничего, это UI | Хочешь видеть все запущенные, приостановленные и завершённые сессии в одном месте |
/goal | Автономность | Хочешь, чтобы Claude работал до условия без твоих промптов между ходами |
Типичные комбинации на практике. Две фичи параллельно вручную - два терминала, в каждом claude --worktree, простейший случай. Ночной рефакторинг, пока ты закрываешь ноутбук - /bg плюс /goal с условием завершения, сессия живёт независимо от твоего окна. Один промпт и три параллельных исследования - три субагента с isolation: worktree, каждый в своей песочнице. Вопрос «что у меня сейчас крутится» - дашборд агентов с фильтрами running, blocked, done.
Формула параллельности: worktree изолирует файлы, `/bg` изолирует контекст, субагент изолирует задачу, `/goal` добавляет автономность. По отдельности каждый закрывает одну проблему, вместе они дают способ держать три-пять задач сразу без когнитивного коллапса.
5 граблей при работе с worktree
Самые частые проблемы собраны в один список: забыл .worktreeinclude и не работает env, спутал worktree с обычной веткой и потерял незакоммиченные правки, держишь пять сессий и не помнишь, что где, не настроил очистку и копятся мёртвые папки, забыл про диалог доверия в новой директории и --worktree падает.
Первая. Запустил worktree, .env нет, ничего не работает. Самый частый случай. Worktree - свежий чекаут, gitignored-файлов в нём нет. Лечится так: сразу при подключении worktree-режима кладёшь .worktreeinclude с .env* и нужными локальными конфигами. Проверь, что файл лежит в корне репо; внутри .claude/ он не подхватится.
Вторая. Хочешь вернуться на основную ветку, делаешь cd в корень и думаешь, что потерял незакоммиченные изменения в worktree. Корневая папка и worktree - две разные рабочие копии. Перешёл cd назад, изменения в worktree остались на месте, никуда не делись. Опасность в другом: если ты перепутал и сделал git stash в основной папке, думая, что ты в worktree, стэш создастся в основной ветке, а не там, где ты его ждёшь.
Третья. Запустил пять параллельных сессий и не помнишь, что в какой делается. Документация Anthropic прямо предупреждает: больше двух-трёх сессий когнитивно не вытягивает большинство разработчиков. Признак перегруза - открываешь дашборд агентов и не можешь с ходу сказать, кто чем занят. Ограничь себя двумя одновременными сессиями. Если задачи объективно больше, значит, её пора оркестрировать через /goal и субагентов, а не держать окна руками.
Четвёртая грабля денежная и по данным. Worktree от headless-режима не чистятся сами. Команда `claude --worktree feature-x -p "сделай то-то"` не показывает интерактивный exit prompt, значит, нет момента, в который Claude спросит «удалить worktree?». Такие worktree копятся на диске. Чистить руками: `git worktree remove .claude/worktrees/feature-x`, или скриптом по cron, который сносит всё старше 7 дней.
Пятая. Диалог доверия в новой папке. Если ты впервые открыл репо и сразу пишешь claude --worktree, команда упадёт с ошибкой. Запусти claude без флагов, прими workspace trust, выйди, и после этого --worktree работает. Сделано специально, чтобы Claude не получил доступ к чужому проекту без твоего согласия.
Что удаляется автоматически, а что руками
Worktree от --worktree без изменений (нет коммитов, нет untracked-файлов, нет незакоммиченных правок) удаляется сам при выходе. С изменениями Claude спросит. Worktree от субагентов и /bg удаляются автоматически по таймауту cleanupPeriodDays из настроек, если они чистые. Worktree от -p не чистятся вообще, снимать руками через git worktree remove.
Убирается само
- worktree от --worktree без изменений - при выходе
- worktree субагентов и /bg, если чистые - по таймауту cleanupPeriodDays
- с изменениями и именем Claude спросит, оставить или удалить
Чистить руками
- worktree от headless-запуска с флагом -p
- снимать командой git worktree remove
- иначе копятся мёртвые папки на диске
Логика автоочистки зависит от того, что ты в worktree наработал и как стартовал сессию. Документация Anthropic описывает это так.
Если в worktree нет незакоммиченных изменений, untracked-файлов и новых коммитов, worktree и его ветка удаляются автоматически при выходе из сессии. Если у сессии есть имя, Claude вместо удаления спросит, чтобы ты мог сохранить worktree на потом.
- Anthropic Docs, Run parallel sessions with worktrees
Разложим на три сценария. Сценарий первый: вошёл, ничего не наработал, вышел - worktree удалён. Сценарий второй: что-то наработал и не зафиксировал - Claude спросит при выходе «оставить или удалить». Вариант «оставить» сохраняет папку и ветку для возврата. Вариант «удалить» сносит директорию вместе с незакоммиченными изменениями и новыми коммитами. Это деструктивно, не нажимай «удалить» по инерции.
Сценарий третий: запустил с -p (headless), команда отработала и вышла, worktree остался. Чистить руками:
git worktree remove .claude/worktrees/feature-x
Дополнительно: worktree от субагентов и /bg-сессий удаляются фоновой уборкой, если им больше cleanupPeriodDays дней (настройка в settings, обычно 30 дней по умолчанию) и в них нет несохранённой работы. Worktree от --worktree автоочистка не трогает, они на твоей ответственности.
Альтернатива для SVN, Perforce, Mercurial: хук WorktreeCreate
Worktree-режим по умолчанию использует git worktree. Для SVN, Perforce, Mercurial и других систем контроля версий можно подключить свой механизм через хуки WorktreeCreate и WorktreeRemove в настройках Claude Code. Хук получает имя на stdin, должен распечатать путь к созданной директории и вернуться с кодом 0. При использовании кастомного хука .worktreeinclude не обрабатывается - копирование локальных файлов делаешь сам внутри хука.
Если репозиторий на Subversion или Mercurial, флаг --worktree напрямую не сработает. Anthropic даёт точку расширения через два хука: WorktreeCreate создаёт изолированную копию, WorktreeRemove удаляет её.
Пример хука для SVN из официальной документации:
{
"hooks": {
"WorktreeCreate": [
{
"hooks": [
{
"type": "command",
"command": "bash -c 'NAME=$(jq -r .name); DIR=\"$HOME/.claude/worktrees/$NAME\"; svn checkout https://svn.example.com/repo/trunk \"$DIR\" >&2 && echo \"$DIR\"'"
}
]
}
]
}
}
Хук читает имя worktree из stdin (приходит { "name": "feature-auth" }), делает svn checkout в заранее посчитанную директорию и печатает путь в stdout. Claude Code берёт этот путь как рабочую папку для новой сессии.
Важная оговорка: при кастомном хуке .worktreeinclude не используется. Если тебе нужны .env или другие gitignored-файлы в новой папке, копируй их прямо внутри скрипта хука.
Куда это встраивается и что дальше
Worktree даёт изоляцию файлов. Фоновая сессия - изоляцию контекста и токенов. Субагент - изоляцию задачи и инструментов. Режим /goal - автономность до заданного условия. По отдельности каждый механизм решает одну проблему. Вместе они складываются в рабочий способ держать три-пять параллельных задач без когнитивного коллапса. Это и есть скиллсет, на котором стоит продвинутый вайб-кодинг в 2026 году.
Тема естественно продолжает три соседние: как настроить автономного агента через /goal и дашборд, как собирать собственных субагентов под свои задачи и как запускать десятки агентов через динамические воркфлоу.
Чтобы у параллельных сессий было что изолировать, полезно заранее навести порядок в самом проекте: файл CLAUDE.md, .gitignore, структура папок. Как собрать этот фундамент - в разборе каркас проекта для вайб-кодинга.
Чек-лист: что у тебя теперь есть
- Понимаешь разницу между
git checkoutиgit worktree: одна папка против нескольких рабочих копий на диске - Запускаешь параллельные сессии командой
claude --worktree <name>, каждая в своей папке и ветке .claude/worktrees/добавлен в.gitignore, чтобыgit statusне забивался untracked-файлами- Файл
.worktreeincludeв корне переносит.envи локальные конфиги в каждый новый worktree сам - Умеешь открыть чужой PR в отдельном worktree командой
claude --worktree "#N"для код-ревью - Выбираешь базовую ветку через
worktree.baseRef(freshилиhead) под свой сценарий - Изолируешь субагентов флагом
isolation: worktree, чтобы они не переписывали файлы друг друга - Знаешь, какой worktree чистится сам, а какой (от
-p) надо снимать руками черезgit worktree remove - Держишь себя в рамках двух-трёх сессий, а большее оркеструешь через
/goalи субагентов
Рассылка
Подпишись на еженедельную рассылку
Полезные материалы и скиллы, которые усилят твою работу с нейросетями и помогут больше зарабатывать. Раз в неделю, без воды и спама.
человек уже подписались
Готово! Ты в списке.
Первое письмо придёт в ближайшую рассылку. Отписка в один клик.
Частые вопросы
Что такое git worktree в Claude Code простыми словами?
Это отдельная рабочая папка для другой ветки того же репозитория. Команда claude --worktree feature создаёт папку в .claude/worktrees/, заводит ветку и запускает Claude Code прямо там. Две сессии в двух терминалах пишут в разные файлы на диске и физически не мешают друг другу.
Чем worktree отличается от обычной git-ветки?
git checkout переключает одну и ту же папку между ветками, старые файлы исчезают с диска до возврата. git worktree создаёт вторую папку рядом с первой, обе ветки живут одновременно. Под капотом один репозиторий, общая история и remote, просто несколько рабочих копий.
Как перенести .env и секреты в новый worktree?
Положи в корень проекта файл .worktreeinclude со списком файлов из .gitignore, которые надо копировать: .env, .env.local, локальные конфиги. Синтаксис как у .gitignore. Claude Code копирует их в каждый новый worktree сам, отслеживаемые git файлы не дублируются никогда.
Сколько сессий Claude Code реально держать параллельно?
Комфортно две-три. Больше большинство разработчиков когнитивно не тянет: открываешь список сессий и не помнишь, кто чем занят. Если задача требует больше, её лучше оркестрировать через субагентов и автономный режим, а не держать пять окон руками.
Worktree удаляется сам или его надо чистить?
Worktree от --worktree без изменений удаляется автоматически при выходе. Если внутри есть незакоммиченные правки, Claude спросит, оставить или удалить. Worktree от headless-запуска с флагом -p не чистится вообще, снимать руками командой git worktree remove.