Суть урока
Представь что у тебя два рабочих стола для одного проекта: на первом пишешь основной код, на втором экспериментируешь. Они не мешают друг другу — и оба агента работают одновременно. Это и есть Git (гит — система контроля версий) Worktrees (воркtри — параллельные рабочие копии репозитория).
Термины урока: git (гит — система контроля версий), worktree (воркtри — параллельная рабочая копия репозитория), CI/CD (си-ай/си-ди — Continuous Integration/Delivery, непрерывная интеграция и доставка), GitHub Actions (ГитХаб Экшенс — система автоматизации в GitHub), workflow (воркфлоу — рабочий процесс), agent (агент — автономный исполнитель).
Ключевые концепции
- Git и GitHub: локальное vs облачное
- Worktree = параллельные рабочие копии одного репозитория
- Два агента на две ветки = параллельная разработка без конфликтов
- Встроенная поддержка в Claude Code:
claude --worktree <имя> - GitHub Actions и автоматизация CI/CD (непрерывная интеграция и доставка)
Теория
Git и GitHub — в чём разница
Git — программа которая живёт на твоём компьютере. Она отслеживает все изменения в файлах проекта и позволяет:
- Вернуться к любой предыдущей версии
- Работать в нескольких ветках параллельно
- Видеть кто, когда и что изменил
GitHub — облачная платформа где хранятся Git-репозитории. Дополнительно к хранению она даёт:
- Backup в облаке (если компьютер умрёт — код сохранится)
- Совместную работу с командой
- Pull Requests для ревью кода
- GitHub Actions для автоматизации
Образ: Git — твой личный дневник, GitHub — сейф в банке где хранится копия.
Ветки и Pull Requests
Ветка (branch) — это параллельная линия разработки. Ты создаёшь ветку чтобы поработать над фичей не ломая основной код:
git checkout -b feature/payment-integration
# Теперь все изменения идут в ветку feature/payment-integration
# Основная ветка (main) остаётся нетронутойPull Request (PR) — предложение влить изменения из ветки в основную. Для соло-разработчиков это полезно как история решений. Для команды — это обязательный этап ревью кода.
Что такое Git Worktrees
Обычно у тебя одна рабочая копия репозитория. Worktrees позволяет иметь несколько рабочих копий одновременно, каждая на своей ветке.
Без worktrees:
my-project/ ← одна папка, одна ветка
src/
tests/Хочешь переключиться на другую ветку? Приходится делать git stash или git checkout — и ты теряешь текущий контекст.
С worktrees:
my-project/ ← основная ветка (main)
src/
tests/
my-project-feature-A/ ← ветка feature-A
src/
tests/
my-project-hotfix/ ← ветка hotfix
src/
tests/Три отдельных папки, три разных состояния кода, один репозиторий под капотом.
Почему это важно с Claude Code
Каждый экземпляр Claude Code работает с файлами в своей директории. Запусти Claude Code в my-project/ — он работает с main. Запусти в my-project-feature-A/ — он работает с feature-A.
Сценарий параллельной разработки:
Агент 1 (в my-project/):
→ Пишет основной воркфлоу обработки заказов
→ Интегрирует базу данных
→ Пишет тесты
Агент 2 (в my-project-feature-A/):
→ Одновременно разрабатывает UI для просмотра заказов
→ Создаёт API endpoints
→ Документирует
Оба работают ОДНОВРЕМЕННО, не мешают друг другуВместо последовательного "сначала одно, потом другое" — параллельная разработка. На практике это может заметно сократить время выполнения проекта.
Как создать и использовать Worktrees
Самый короткий путь: встроенный флаг Claude Code. Начиная с современных версий не обязательно создавать worktree руками:
claude --worktree feature-authКоманда (можно коротко -w) создаёт изолированный worktree в папке .claude/worktrees/feature-auth/ на новой ветке worktree-feature-auth и сразу запускает в нём Claude. Запусти ту же команду с другим именем в другом терминале — получишь вторую изолированную сессию. Что ещё полезно знать:
- Добавь
.claude/worktrees/в.gitignore, чтобы папки worktree не светились в основном репозитории. - Worktree — свежая копия: секретные файлы вроде
.envв неё не попадают. Чтобы они копировались автоматически, положи в корень проекта файл.worktreeinclude(синтаксис как у.gitignore). - Можно просто попросить Claude в сессии: «поработай в worktree». Суб-агента тоже можно изолировать: в его файле добавь
isolation: worktree(см. урок Суб-агенты). - При выходе Claude проверяет, нет ли в worktree несохранённой работы, и спрашивает, оставить его или удалить.
- Нужен git-репозиторий. Документация: code.claude.com/docs/en/worktrees.
Ниже — то же самое вручную, средствами самого git. Это полезно знать, чтобы понимать, что происходит под капотом.
Шаг 1: Создать worktree
# В основной папке проекта:
git worktree add ../my-project-feature-A feature-A
# Что происходит:
# - Создаётся папка my-project-feature-A рядом с основной
# - Она переключена на ветку feature-A
# - Если ветка не существует — добавь -b: git worktree add -b feature-A ../my-project-feature-AШаг 2: Запустить Claude Code в каждой папке
# Терминал 1:
cd my-project
claude
# Терминал 2 (новое окно):
cd my-project-feature-A
claudeШаг 3: Посмотреть все активные worktrees
git worktree list
# Выведет:
# /path/to/my-project abc1234 [main]
# /path/to/my-project-feature-A def5678 [feature-A]Шаг 4: Удалить worktree после завершения
git worktree remove my-project-feature-AGitHub Actions — автоматизация CI/CD
CI/CD (Continuous Integration / Continuous Deployment) — автоматический запуск тестов и деплоя при изменении кода.
GitHub Actions позволяет настроить это без дополнительных сервисов:
# .github/workflows/test.yml
name: Run Tests
on:
push:
branches: [main, feature-*]
pull_request:
branches: [main]
jobs:
test:
runs-on: ubuntu-latest
steps:
# версии действий (@v4, @v5) периодически обновляются: сверяйся со страницей действия на GitHub
- uses: actions/checkout@v4
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: '3.11'
- name: Install dependencies
run: pip install -r requirements.txt
- name: Run tests
run: pytestТеперь каждый раз когда ты пушишь код — GitHub автоматически запускает тесты. Если тесты не прошли — GitHub не позволит влить изменения в main (если включено соответствующее правило защиты ветки).
Для Claude Code это означает: агент пишет код, пушит в ветку, GitHub Actions запускает тесты, ты видишь результат прямо в Pull Request — не открывая терминал.
Интеграция с Trigger.dev
Если твой проект использует Trigger.dev для воркфлоу, можно настроить автоматический деплой (проверено по документации Trigger.dev в октябре 2026):
# .github/workflows/deploy.yml
name: Deploy to Trigger.dev
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Deploy workflows
run: npx trigger.dev@latest deploy
env:
TRIGGER_ACCESS_TOKEN: ${{ secrets.TRIGGER_ACCESS_TOKEN }}Пуш в main → автоматический деплой воркфлоу на Trigger.dev. Никакого ручного деплоя.
Практика
Задание: Запустить двух агентов параллельно через worktrees
Создай новый репозиторий или используй существующий:
bash mkdir parallel-demo && cd parallel-demo git init echo "# Parallel Demo" > README.md git add . && git commit -m "Initial commit"Создай worktree для второй ветки:
bash git worktree add -b feature-backend ../parallel-demo-backendОткрой два терминала:
- Терминал 1:
cd parallel-demo && claude - Терминал 2:
cd parallel-demo-backend && claude
- Терминал 1:
Дай каждому агенту разную задачу:
- Агент 1: "Создай README с описанием проекта и инструкцией по установке"
- Агент 2: "Создай базовый Python-скрипт main.py с функцией hello_world"
Наблюдай как оба работают одновременно
После завершения — слей изменения:
bash cd parallel-demo git merge feature-backend git worktree remove ../parallel-demo-backend
Частые ошибки
1. Забыть удалить worktree после merge Worktrees копят папки на диске. После слияния ветки — всегда удаляй:
git worktree remove ../my-project-feature-A
# Проверь что не осталось "висящих":
git worktree list2. Пытаться checkout одну ветку в двух worktrees Git не позволяет одну ветку открыть в двух worktrees одновременно. Каждый worktree = уникальная ветка.
3. Редактировать файлы в worktree из другой IDE Если открыл worktree в Claude Code — не редактируй те же файлы из VS Code одновременно. Конфликты гарантированы.
4. Не создавать ветку перед worktree Если ветки ещё нет — используй флаг -b:
git worktree add -b feature-new ../my-project-new5. Merge без проверки тестов Перед merge из worktree — запусти тесты в обеих ветках. GitHub Actions автоматизирует это через CI.
Инструменты и ресурсы
- Git Worktree — официальная документация — git-scm.com/docs/git-worktree
- GitHub Actions — автоматизация CI/CD — docs.github.com/en/actions (для публичных репозиториев бесплатно, для приватных есть ежемесячный бесплатный лимит минут; актуальные лимиты смотри на странице тарифов GitHub)
- Claude Code и worktrees — code.claude.com/docs/en/worktrees
- GitHub CLI (
gh) — управление Pull Requests и Actions из терминала — cli.github.com - Skill:
superpowers:using-git-worktrees— расширенное руководство по паттернам с worktrees
Ключевые выводы
Worktree — это не магия. Это просто несколько папок на одном репозитории. Сила в том что каждый агент работает в своей изолированной папке одновременно. GitHub Actions — твой бесплатный QA-отдел. Один раз настроил — тесты бегут сами при каждом пуше. Параллельная разработка с агентами — это не будущее, это доступно прямо сейчас с
git worktree add.
Связанные уроки
- Команды агентов: worktrees + суб-агенты = каждый агент работает в своём worktree параллельно
- Headless и CI/CD: GitHub Actions автоматически запускают тесты при пуше из любого worktree
Что дальше
→ Headless и CI/CD: как запускать Claude Code в автоматических сценариях без человека
Отметка хранится только в этом браузере и никуда не отправляется. Мой прогресс