К содержимому
Claude Code с 0:полный курс
Уровень 4 · Параллельная работа 9 мин Проверено автором · 12 окт. 2026 г. Сверено с Claude Code v2.1.287 · 12 окт. 2026 г.

Параллельные сессии в worktree

claude --worktree запускает сессию в отдельной рабочей папке на своей ветке. Две сессии правят каждая свою копию файлов, а работа возвращается через git merge из основной папки. Подготовь .gitignore, помни про .worktreeinclude и про то, от какой ветки стартует worktree.

Уровень 4 · 0 / 4 уроков0%

Ты хочешь, чтобы одна сессия Claude поправила документацию, а другая в это же время дописала тест. Если запустить обе в одной папке, они будут править одни и те же файлы и мешать друг другу. Нужна вторая рабочая папка.

Что такое worktree

— это ещё одна рабочая папка того же репозитория на своей . История у папок общая, а файлы у каждой свои.

claude --worktree docs-pass

Claude Code создаёт папку .claude/worktrees/docs-pass/ на новой ветке worktree-docs-pass и запускает сессию в ней. Короткая форма — claude -w docs-pass. Инструменты правки такой сессии не трогают твою основную папку, а её команды не запускаются там и не направляют туда git.

Одно условие: в этом репозитории ты уже хотя бы раз запускал claude и принял вопрос о доверии папке. Иначе claude --worktree завершится с ошибкой.

Что общее, а что нет

Общее для всех worktreeУ каждого worktree своё
коммитынезакоммиченные правки
веткиустановленные зависимости (node_modules)
историяигнорируемые git файлы, например .env

Каждый worktree — это свежая выгрузка из git. Поэтому сессии во втором worktree первым делом придётся поставить зависимости.

Подготовка проекта

1. Исключи папку worktree из git. Иначе их содержимое появится в основной папке как неотслеживаемые файлы:

echo '.claude/worktrees/' >> .gitignore
git add .gitignore && git commit -m "Ignore Claude Code worktrees"
git push

Исключай именно .claude/worktrees/, а не весь .claude/: там лежат настройки и навыки, которые ты коммитишь для команды.

2. Нужные игнорируемые файлы — в .worktreeinclude. Если проекту для запуска нужен .env, перечисли его в файле .worktreeinclude в корне репозитория, и он скопируется в каждый новый worktree:

echo '.env' > .worktreeinclude

Пиши туда только необходимое: каждый worktree получает собственную копию каждого секрета.

От какой ветки стартует worktree

Новый worktree ответвляется от основной ветки на удалённом репозитории, а не от твоего локального HEAD. Незапушенные коммиты и работа из твоей фичевой ветки в него не попадут. Вот зачем на шаге 1 был git push.

Если нужно стартовать от локального HEAD, добавь в .claude/settings.local.json:

{ "worktree": { "baseRef": "head" } }

Без удалённого репозитория worktree и так стартует от локального HEAD.

Как вернуть работу

Каждая сессия коммитит на своей ветке. Сливаешь ты — из основной папки, в отдельном терминале:

git worktree list
git merge worktree-docs-pass
git merge worktree-test-pass

Слияние делаешь сам: пока сессия изолирована в worktree, Claude Code блокирует её git-команды, которые лезут в основную папку. Если обе задачи меняли одни и те же строки, git остановится на конфликте — разреши его или запусти claude в основной папке и попроси помочь.

Потом в каждой сессии набери /exit. Если на ветке worktree есть новые коммиты, Claude Code спросит, оставить worktree или удалить. После слияния выбирай удаление.

Мини-проверка

Сессия в worktree не видит последний коммит, который ты сделал час назад. Почему?

Осторожно

Удаление worktree стирает его папку и ветку вместе со всем, что ты не слил. Сначала git merge, потом удаление — или выбери «оставить». И помни: «Да, и больше не спрашивать» для команды оболочки в сессии worktree обычно сохраняется в .claude/settings.local.json основной папки и действует во всём репозитории даже после удаления worktree. Несколько сессий сразу ещё и умножают расход токенов: давай каждой одну небольшую задачу.

Практика в терминале

Допиши .claude/worktrees/ в .gitignore, создай .worktreeinclude со строкой .env и запусти claude --worktree docs-pass. В тренажёре это просто приветствие — в настоящем проекте появится папка .claude/worktrees/docs-pass/ на ветке worktree-docs-pass.

Проверь себя

Отвечено 0/3
Режим:

Что делает команда claude --worktree docs-pass?

От какого состояния стартует новый worktree по умолчанию?

Ты в сессии worktree ответил «Да, и больше не спрашивать» на команду оболочки. Где сохранится это разрешение?

Выполни задание в терминале и ответь на вопросы, чтобы завершить урок.

📝 Мои заметки

Сохраняется автоматически в этом браузере · видно на странице «Заметки».

Задание

Подготовь проект к параллельным сессиям: исключи папку с worktree из git, попроси копировать в каждый worktree файл .env и запусти первую сессию в worktree с именем docs-pass.

Tab дополнить · ↑ прошлые · Ctrl+L очистить · help команды

  • Не выполнено: Папка .claude/worktrees/ исключена из git
  • Не выполнено: .env копируется в каждый новый worktree
  • Не выполнено: Сессия запущена в worktree docs-pass

Вопросы и ответы по уроку

Что делает команда claude --worktree docs-pass?

Worktree — вторая рабочая папка на своей ветке с общей историей. Сессия правит свою копию файлов, а твоя основная папка остаётся нетронутой.

От какого состояния стартует новый worktree по умолчанию?

Поэтому правило в .gitignore стоит закоммитить и запушить. Если нужен локальный HEAD, добавь "worktree": {"baseRef": "head"} в .claude/settings.local.json. Без удалённого репозитория worktree и так стартует от локального HEAD.

Ты в сессии worktree ответил «Да, и больше не спрашивать» на команду оболочки. Где сохранится это разрешение?

В большинстве репозиториев на macOS, Linux и WSL 2 правило уходит в локальные настройки основной папки. Одобряй так только то, что разрешил бы везде.

Сессия в worktree не видит последний коммит, который ты сделал час назад. Почему?

Запушь коммит до запуска worktree или добавь worktree.baseRef со значением head в .claude/settings.local.json.

Листай уроки клавишами ← → · поиск по ⌘K