Термин Разработка и code review Средний

Git worktree

Git worktree — механизм Git, который позволяет открыть несколько рабочих папок одного репозитория для разных веток и задач.

git worktree рабочее дерево Git дополнительное рабочее дерево linked worktree worktree Git параллельная рабочая папка
Git worktree — это способ работать с несколькими рабочими деревьями одного Git-репозитория. Каждое worktree выглядит как отдельная папка с файлами проекта, но использует общую Git-историю и связан с конкретной веткой или commit.

Проще говоря, worktree помогает не переключать одну папку между ветками туда-сюда. Можно держать основную ветку в одной папке, багфикс — во второй, эксперимент — в третьей, а code review чужого PR — в четвертой. Это удобно, когда нужно быстро сравнить версии, запустить тесты или не смешивать незавершенные изменения.

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

Для AI-кодинга worktree полезен особенно. Можно дать агенту отдельную папку для задачи, не трогая основную рабочую директорию. Так проще параллелить изменения, проверять несколько подходов, изолировать эксперименты и не бояться, что незавершенный код в одной ветке помешает другой задаче.

Примеры

  • Разработчик держит `main` в основной папке, а новую фичу открывает через `git worktree add ../feature feature-branch`.
  • AI-агент получает отдельный worktree, чтобы внести правку, пока человек продолжает работу в своей папке.
  • Для срочного hotfix создают отдельное worktree и не трогают незавершенную feature-ветку.
  • Ревьюер открывает чужой PR в отдельной папке и запускает тесты без переключения текущей ветки.
  • После завершения задачи worktree удаляют, а ветку оставляют или мержат через pull request.

Где используется

  • Параллельная работа над несколькими ветками
  • Изоляция AI-кодинг задач и экспериментов
  • Проверка pull request без переключения основной папки
  • Срочные hotfix рядом с незавершенной фичей
  • Сравнение поведения разных версий проекта
  • Запуск отдельных dev-серверов для разных веток
  • Безопасная работа с несколькими задачами в одном репозитории

Связанные термины

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

Чем git worktree отличается от git checkout?

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

Чем worktree отличается от второго clone?

Второй clone создает отдельную копию репозитория. Worktree использует общую Git-историю и metadata, поэтому обычно быстрее и удобнее для локальной параллельной работы.

Можно ли открыть одну ветку в двух worktree?

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

Какие ошибки часто бывают с worktree?

Забывают удалить старые worktree, путают папки, запускают команды не в том дереве, оставляют разные зависимости или пытаются удалить папку вручную без `git worktree remove`.

Где читать дальше

Статьи по теме

Инструменты

Связанные инструменты