глоссарий
что такое git worktree?
TL;DR
Git worktree это вторая рабочая копия вашего репозитория в собственной ветке и папке, с общей историей. Он позволяет работать над двумя ветками одновременно без stash и переключений. Для ИИ-агентов именно он делает безопасным параллельный запуск нескольких агентов, потому что каждый правит свои файлы. Pane создаёт worktree для каждой панели, наполняет его вашими .env и настройками и удаляет, когда вы архивируете панель.
Git worktree это вторая рабочая копия вашего репозитория в собственной папке и в собственной ветке. У неё общая git-история с основным checkout, поэтому она создаётся быстро и почти не занимает лишнего места на диске. Открытых worktree может быть сколько угодно.
какую проблему решают worktree
В одной папке может быть активна только одна ветка. Worktree добавляет ещё одну папку с другой веткой.
Обычно репозиторий это одна папка с одной активной веткой. Чтобы работать над двумя задачами сразу, вы убираете изменения в stash, переключаете ветку, делаете другую работу, переключаетесь обратно и достаёте изменения из stash. Это работает, но медленно, и легко ошибиться.
Worktree даёт вам вторую папку, в которой уже выбрана другая ветка. Функция A живёт в одной папке, функция B в другой, обе открыты одновременно, без stash и переключений.
почему это важно для ИИ-агентов
Именно worktree делают безопасным запуск нескольких агентов в одном репозитории.
Два ИИ-агента в одной папке перезаписывают друг друга. Агент A правит auth.ts, агент B через минуту правит auth.ts, и побеждает тот, кто сохранил последним. Работа другого агента пропадает, и ни один из них об этом не знает.
Когда у каждого свой worktree, у каждого агента своя папка, ветка и файлы. Оба могут одновременно править auth.ts, не трогая копию другого. Когда они закончат, вы проверяете и сливаете каждую ветку отдельно.
как это выглядит на диске
Общая история, отдельные файлы. Где лежат папки, решаете вы или ваш инструмент.
my-project/ ← your main checkout (main)
my-project/worktrees/
├─ add-auth/ ← worktree, branch add-auth
└─ fix-nav/ ← worktree, branch fix-navВсе worktree делят одну git-историю, поэтому commit, сделанный в одном, виден из остальных. Незакоммиченные правки остаются в своей папке. Самому git всё равно, где лежат worktree: рядом с репозиторием, в отдельной папке или внутри него, как делает Pane.
как Pane это автоматизирует
Pane создаёт, наполняет и убирает worktree для каждой панели, поэтому вам не нужно вводить команды.
Вам не нужно запускать никаких команд git. Когда вы создаёте панель, Pane:
- Берёт worktree, заранее подготовленный для этого проекта и ветки, поэтому панель открывается почти мгновенно, и создаёт для него новую ветку.
- Копирует в него ваши файлы .env, настройки агентов вроде .claude и .codex и node_modules, чтобы агент мог сразу начать работу. Список можно изменить в настройках.
- Когда вы архивируете панель, проверяет, нет ли незакоммиченной, неотслеживаемой или неотправленной работы, и удаляет worktree. Архивированную панель можно потом восстановить.
вручную
Три команды, чтобы создать и начать, и две, чтобы убрать.
Без инструмента то же самое делается несколькими командами git:
echo "worktrees/" >> .git/info/exclude # once: keep them out of git status
git worktree add worktrees/add-auth -b add-auth
cd worktrees/add-auth
claude # start your agent here
# once the branch is merged:
git worktree remove worktrees/add-auth
git branch -d add-authНе забудьте удалить worktree и ветку после merge. Большинство забывает, поэтому инструменты это и автоматизируют.
связанные материалы
- → Панели и worktree - как Pane управляет worktree
- → Параллельный запуск агентов - полный процесс
- → Монорепозитории - worktree в монорепозиториях
- → Git worktree для ИИ-агентов - краткий обзор
Источники
- Исправления
- Если что-то здесь неверно или устарело, сообщите нам, и мы исправим это и обновим дату вверху. Открыть задачу на GitHub
- Источники
частые вопросы
Автор: Parsa Khazaeepoul, сооснователь Pane. .