Перейти к основному содержимому

Git worktree и параллельные потоки работы

Продвинутый
What you'll learn
  • Что такое git worktree — один репозиторий, несколько рабочих каталогов, каждый на своей ветке
  • Какую именно проблему это решает: не давать параллельным сессиям Claude сталкиваться на одних и тех же файлах
  • Четыре команды, чтобы добавить, перечислить и удалить worktree
  • Когда приём оправдывает себя — и три подводных камня, которые кусают при слиянии
  • Как worktree сочетаются с субагентами: параллелизм между сессиями против параллелизма внутри одной

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

Какую проблему это решает

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

Основы

Весь рабочий процесс держится на четырёх командах: добавить worktree (новый каталог + новая ветка), посмотреть, что есть, и удалить worktree, когда закончили.

Guided walkthrough1 of 4
  1. Из вашего репозитория git worktree add ../app-feature-a -b feat-a создаёт новый каталог И новую ветку за один шаг.

Рабочий процесс из четырёх команд

# from your repo
git worktree add ../app-feature-a -b feat-a   # new dir + new branch
git worktree add ../app-fix-123 -b fix-123
git worktree list
# when done with one:
git worktree remove ../app-feature-a

Откройте сессию Claude Code в каталоге каждого worktree и дайте им работать независимо.

Когда это того стоит

  • Параллельные фичи/исправления, по которым вы хотите продвигаться одновременно.
  • Долгая задача, выполняющаяся в одном worktree, пока вы продолжаете работать в другом.
  • Рискованные эксперименты, изолированные от вашего основного checkout.

Подводные камни

Watch out
  • Следите за обратным слиянием: ветки рано или поздно сольются — конфликты всплывают именно тогда, а не в процессе. Держите worktree сфокусированными и недолговечными.
  • Не запускайте из двух worktree общие ресурсы с состоянием (одна dev-БД, один порт), не разделив их.
  • Убирайте за собой с помощью git worktree remove, чтобы устаревшие каталоги не накапливались.

Worktree против субагентов

Две разные оси параллелизма — они не конкурируют, а складываются.

Что распараллеливаетсяИзоляция
СубагентыРабота внутри одной сессии (делегирование)Изолированный контекст
WorktreeРабота между сессиями на дискеИзолированные ветки/файлы

Они хорошо сочетаются: сессия в worktree может сама порождать субагентов.

Pro tip
  • Используйте worktree, когда вам нужны две сессии Claude, одновременно работающие с одним репозиторием; используйте субагента, когда одной сессии нужно выгрузить часть работы в изолированный контекст.

Проверь себя

0/4
  1. Что даёт вам git worktree?
  2. Какая команда создаёт новый каталог И новую ветку за один шаг?
  3. Когда конфликты слияния от параллельных worktree на самом деле всплывают?
  4. Как соотносятся worktree и субагенты?
Key takeaways
  • git worktree = один репозиторий, несколько рабочих каталогов, каждый на своей ветке — основа для бесконфликтных параллельных сессий Claude.
  • Две сессии в одном рабочем каталоге мешают друг другу; отдельный worktree на каждую сессию держит файлы и ветки изолированными до момента слияния.
  • git worktree add ../dir -b branch создаёт каталог + ветку; list показывает их; remove убирает за собой.
  • Оправдано для параллельных фич/исправлений, долгих задач параллельно с другой работой и изолированных рискованных экспериментов.
  • Опасайтесь обратного слияния, не делите между worktree ресурсы с состоянием (БД, порт) и всегда убирайте за собой — и помните, что worktree сочетаются с субагентами.

Дальше