К содержанию
SEO и вебмастерство
Меню сайта

Git worktree для ИИ-агентов: две задачи без общей рабочей папки


Раздельные рабочие каталоги двух ИИ-агентов и сборка правок сайта

11 ноября 2026.

Один агент правит шапку сайта, второй исправляет форму подписки. Если открыть им одну папку, чужие незавершённые изменения попадут в проверку, а переключение ветки затронет обоих. Выдайте каждой задаче собственный Git worktree: отдельный рабочий каталог с новой веткой от заранее выбранного коммита.

Общая база, раздельная работа, последовательная сборка
  1. 1Коммит базыОдин зафиксированный SHA для двух задач
  2. 2Два worktreeСвои ветки, порты и тестовые базы
  3. 3ПриёмкаПросмотр diff и проверка каждой задачи
  4. 4СборкаСлияния по одному с повторными тестами

Когда параллельная работа оправдана

Разведите независимые задачи: вёрстку карточки товара и обработчик подписки. Одновременная переделка общего шаблона и зависимых страниц потребует согласования даже в разных папках. Anthropic 2 июня 2026 года описала параллельные и последовательные схемы агентов с отдельными worktree.

В исследовании JetBrains от 18.08.2026 Claude Code использовали на работе 47 % опрошенных профессиональных разработчиков из США. Весь международный опрос охватил более 15 тысяч специалистов в мае — июле. Это показатель использования инструмента в американской части выборки; долю пользователей worktree исследование не устанавливает. Такой контекст объясняет интерес к организации работы агентов, но не обещает экономии на вашем проекте.

Дополнительные агенты расходуют токены, а сборка требует внимания. Для короткой правки обычной ветки достаточно. Подходящие задачи перечислены в обзоре ИИ-инструментов вебмастера.

Что именно разделяет Git

У каждого worktree свои HEAD, индекс и рабочие файлы. Объектная база, ссылки на ветки и по умолчанию настройки репозитория общие. Git обычно запрещает открыть одну ветку в двух деревьях одновременно. Незакоммиченные файлы между каталогами не переносятся; зависимости и локальные конфиги готовьте отдельно.

Worktree не является песочницей безопасности. Процесс с вашими правами может читать соседние папки и менять общие Git-ссылки. Инструкция «работай только здесь» не ограничивает файловые разрешения. Недоверенному коду требуется изолированное окружение без ключей продакшена, с ограничениями сети и записи.

Создать две ветки от закреплённой базы

Учебный пример для Bash или Git Bash предполагает существующий репозиторий $HOME/learning/shop и свободные имена веток и соседних папок. Подставьте свои пути. Выполняйте команды в одной оболочке: base хранит SHA исходного коммита. При ошибке остановитесь.

repo="$HOME/learning/shop"
parent="$HOME/learning"
ls -ld "$repo" "$parent" || exit 1
git -C "$repo" status --short || exit 1
state=$(git -C "$repo" status --porcelain) || exit 1
if [ -n "$state" ]; then
  printf '%s\n' 'STOP: review and save existing changes first.'
  exit 1
fi
base=$(git -C "$repo" rev-parse --verify 'HEAD^{commit}') || exit 1
printf 'Pinned base: %s\n' "$base"
git -C "$repo" worktree list || exit 1
git -C "$repo" worktree add -b task/header "$parent/shop-header" "$base" || exit 1
git -C "$repo" worktree add -b task/signup "$parent/shop-signup" "$base" || exit 1
git -C "$parent/shop-header" status --short
git -C "$parent/shop-signup" status --short

add -b создаёт две новые ветки от одного коммита. Если имя занято, не обходите отказ Git. Если создан только первый каталог, он останется на месте: уточните состояние через git worktree list перед продолжением. SHA базы сохраните в описании задач. Пустой status --short не проверяет игнорируемые файлы и наличие секретов.

Выдать задачи и развести окружение

Запустите каждую сессию из своего каталога. Учебное задание первому агенту: «Измени только шаблон шапки; верни список файлов, diff и проверки; при необходимости править обработчики остановись». Второму ограничьте задачу формой подписки. Коммиты, push и выкладку разрешайте отдельно.

Для локального PHP-сайта с документным корнем public и PHP в PATH команды запускаются в разных терминалах:

php -S 127.0.0.1:8101 -t "$HOME/learning/shop-header/public"
php -S 127.0.0.1:8102 -t "$HOME/learning/shop-signup/public"

Встроенный сервер не воспроизводит правила Apache. Назначьте разные тестовые базы, например shop_header_test и shop_signup_test, кеш и каталоги загрузок. Порты HTTP базу не разделяют. Почту, платежи и вебхуки отключите или направьте на тестовые приёмники. Общий порядок проверки на копии сайта есть в гайде по обновлению CMS.

Принять изменения и собрать по очереди

Просмотрите diff и новые файлы, которые обычный git diff не показывает. Сохраните одобренные правки коммитами в соответствующих ветках, без конфигов и дампов. Закройте сессии агентов, чтобы ветки больше не двигались. В исходной оболочке создайте ветку сборки от сохранённой базы и начните первое слияние:

git -C "$repo" status --short || exit 1
state=$(git -C "$repo" status --porcelain) || exit 1
if [ -n "$state" ]; then exit 1; fi
git -C "$repo" diff "$base..task/header" --
git -C "$repo" diff "$base..task/signup" --
git -C "$repo" switch -c review/site "$base" || exit 1
git -C "$repo" merge --no-ff --no-commit task/header

Изучите git diff --cached и git status, выполните проверки, завершите одобренное слияние коммитом. Только затем объедините task/signup тем же способом и повторите тесты всего сайта. Конфликты разбирайте вручную; выбор «всё наше» может потерять чужую правку. Отклонённое незавершённое слияние отменяется через git merge --abort; чистое начальное состояние здесь обязательно.

В условном магазине кнопка подписки может потерять обработчик после переименования класса в шапке. Git объединит файлы без текстового конфликта, но пользовательский сценарий сломается. Проверять нужно собранную версию.

Закрыть каталоги без потери результата

После приёмки и сохранения коммитов остановите серверы. Проверьте git status --short в обоих каталогах и отдельно игнорируемые файлы: локальная база может ещё понадобиться. Затем выполните git worktree remove "$parent/shop-header" и аналогичную команду для shop-signup.

Обычное удаление отказывается убирать грязное дерево. Найдите оставшиеся изменения вместо принудительного удаления. Ветки при этом сохраняются; их очистка — отдельное решение.

Источники и границы примера

Команды иллюстрируют локальный учебный процесс; это не отчёт о запуске на конкретном сайте. Перед применением проверьте пути, версию Git и тесты своего приложения. Основания для описанной механики:

  • Anthropic, 2 июня 2026: A harness for every task — схемы совместной работы агентов и выбор процесса под задачу.
  • Git, техническая документация: git-worktree — устройство связанных деревьев, создание веток и ограничения удаления. Дата этого руководства: 11 ноября 2026.

Раздел практики: SEO и ИИ · AGENTS.md для сайта · навыки ИИ-агента.