Orca Guide
Модель Orca

Worktree

Как Orca создаёт отдельный git worktree для каждой функции или ошибки.

Каждая задача в Orca получает отдельный git worktree. Агенты работают в разных каталогах и не меняют файлы друг друга.

Worktree лежат в основе Orca. Вместо постоянного переключения веток и сохранения изменений в stash внутри одной рабочей копии каждая задача получает собственную копию репозитория через git worktree. Разные каталоги не дают агентам изменять файлы друг друга во время параллельной работы.

Основная модель

  • У каждого репозитория есть базовая ссылка, обычно origin/main.
  • У каждого worktree есть исходная ссылка, от которой создаётся ветка.
  • У каждого worktree своя ветка, файлы на диске и терминалы агентов.
  • При удалении worktree после подтверждения удаляются каталог и ветка.

Жизненный цикл задачи

  1. Создание: название задачи, выбор исходной ссылки и при необходимости связь с задачей Linear или GitHub.
  2. Работа: терминалы агентов, редактор, браузер и панели терминала привязаны к этому worktree.
  3. Проверка: просмотр diff относительно исходной ссылки, комментарии к изменениям ИИ и сведения об авторстве.
  4. Отправка: создание коммита, отправка ветки, открытие pull request и ожидание проверок внутри Orca.
  5. Архивация или удаление: worktree и ветка удаляются одним нажатием.

Фоновое создание

После отправки формы создания worktree диалог сразу закрывается, а git fetch и git worktree add продолжают выполняться в фоне. Новый worktree появляется на боковой панели со строкой прогресса. Его вкладка показывает текущее состояние настройки, а после завершения переключается на терминал. Пока идёт создание, можно работать в других worktree, следить за ходом операции или отменить её на панели вкладки. При ошибке там же появятся сообщение и кнопка повторной попытки.

Выбор исходной ссылки

При создании worktree выберите основу новой ветки:

  • базовую ссылку репозитория для обычного сценария;
  • другую локальную ветку, если работа строится поверх проверяемого pull request;
  • определённый SHA коммита;
  • существующую удалённую ветку, которую Orca загрузит и откроет.

Название ветки

По умолчанию Orca формирует название ветки из введённого названия рабочего пространства. Если оно создаётся из pull request GitHub, задачи Linear или Jira либо merge request GitLab, используется связанный объект. Чтобы задать название вручную, раскройте раздел Дополнительно в окне создания worktree и заполните поле Название ветки с подсказкой feature/my-branch.

Поле доступно только при создании из введённого названия рабочего пространства или базовой ветки. Если рабочее пространство связано с отслеживаемой задачей, ветка определяется по этой задаче. Для pull request GitHub она дополнительно уточняется при отправке формы. В таких случаях Orca скрывает поле, чтобы введённое значение не было незаметно проигнорировано.

Устройство боковой панели

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

При добавлении родительской папки с несколькими Git-репозиториями Orca может импортировать выбранные репозитории отдельно или объединить их в одну группу проектов.

Кнопка Поиск в верхней части боковой панели открывает палитру перехода между worktree (Cmd-J). Это тот же инструмент, но доступный мышью. Состояния агентов отображаются прямо на панели, а непросмотренные worktree выделяются полужирным шрифтом.

Worktree можно закрепить вверху проекта, чтобы длительная работа оставалась на виду. В контекстном меню доступны архивация, гибернация и удаление. Удерживайте Cmd в macOS или Ctrl в Linux и Windows, чтобы добавить worktree к выделению. Shift выделяет непрерывный диапазон. Действие из контекстного меню любого выбранного элемента применяется ко всей группе. Строки репозиториев можно менять местами перетаскиванием.

Дважды нажмите на название worktree в боковой панели, чтобы переименовать его на месте. Двойное нажатие на другую область карточки открывает полный диалог редактирования.

Группы нескольких репозиториев и папочные рабочие пространства

Если импортированная родительская папка содержит несколько Git-репозиториев, Orca может объединить их в группу проектов на боковой панели. Такая группа поддерживает папочные рабочие пространства. Они находятся на уровне родительской папки, но связывают источник задачи с одним из вложенных репозиториев. Поэтому задача GitHub, GitLab, Linear или Jira остаётся привязана к нужному репозиторию, хотя рабочее пространство отображается рядом с соседними проектами.

Чтобы создать такое пространство, наведите указатель на заголовок группы проектов и нажмите + с подсказкой "Создать рабочее пространство для группы". В окне Создать папочное рабочее пространство выберите исходный проект задачи, задайте название и при необходимости прикрепите задачу или pull request. После подтверждения пространство появится внутри группы рядом с обычными worktree репозиториев.

При удалении группы проектов Orca предлагает одновременно удалить содержащиеся в ней проекты, то есть регистрации репозиториев. Неиспользуемую группу можно очистить одним подтверждением.

Работа с обычным Git

Каждый worktree Orca является обычным git worktree. Откройте в нём терминал и используйте git status, git rebase, git cherry-pick и любые другие команды. Orca увидит изменения при следующем обновлении.

Созданные вручную командой git worktree add рабочие копии остаются внешними до импорта. Если репозиторий скрывает внешние worktree, Orca показывает новые элементы в разделе Новые внешние worktree, где их можно импортировать или оставить скрытыми.

Если выполнить git worktree remove из CLI, Orca обнаружит удаление и очистит собственное состояние при следующем обновлении репозитория.

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

Что такое git worktree в Orca?

Это отдельная рабочая папка и ветка для конкретной функции или ошибки, созданная из одного репозитория.

Зачем Orca создаёт worktree для каждой задачи?

Так параллельные агенты меняют разные копии файлов и не мешают друг другу до объединения результата.

Нужно ли заново клонировать весь репозиторий?

Нет. Git worktree использует общий репозиторий и создаёт отдельное рабочее дерево без полноценного повторного клонирования.

Как перенести готовые изменения в основную ветку?

Проверьте diff, создайте коммит и объедините ветку привычным способом через pull request, merge или cherry-pick.

Можно ли удалить worktree после завершения?

Да, но сначала убедитесь, что нужные изменения закоммичены или перенесены и в папке не осталось важной незаписанной работы.

On this page