глоссарий

что такое 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:

  1. Берёт worktree, заранее подготовленный для этого проекта и ветки, поэтому панель открывается почти мгновенно, и создаёт для него новую ветку.
  2. Копирует в него ваши файлы .env, настройки агентов вроде .claude и .codex и node_modules, чтобы агент мог сразу начать работу. Список можно изменить в настройках.
  3. Когда вы архивируете панель, проверяет, нет ли незакоммиченной, неотслеживаемой или неотправленной работы, и удаляет 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. Большинство забывает, поэтому инструменты это и автоматизируют.

Источники

Исправления
Если что-то здесь неверно или устарело, сообщите нам, и мы исправим это и обновим дату вверху. Открыть задачу на GitHub
Источники

частые вопросы

или
Скачать*
Предупреждение Windows SmartScreenПри прямом скачивании может появиться предупреждение SmartScreen, пока у Pane нет подписи. Исходный код Pane полностью открыт. Вы можете проверить его или собрать приложение сами.1. Нажмите «Подробнее»2. Нажмите «Выполнить в любом случае»3. Продолжите установкуУстановка через PowerShell скачивает официальный релиз напрямую и позволяет избежать большинства проблем с загрузкой через браузер.глобальная установка через npm
Вставьте команду в PowerShell.Linux

Автор: Parsa Khazaeepoul, сооснователь Pane. .