Что такое…

Что такое git worktree — и зачем держать вторую папку с тем же проектом

Иллюстрация: два рабочих стола, один общий архив под ними

Ты привык, что проект = одна папка, и в ней всегда одна ветка. Хочешь другую — делаешь git switch, и файлы меняются прямо под тобой. Недоделанное приходится куда-то прятать.

А теперь неожиданное: это ограничение не самого Git, а твоей привычки. Одна история проекта умеет жить в нескольких папках сразу. Механизм называется worktree — «рабочее дерево».

Что это на самом деле

git worktree создаёт ещё одну папку с файлами проекта, привязанную к тому же репозиторию.

git worktree add ../shop-payments -b feature/payments

Появилась соседняя папка shop-payments, в ней — ветка feature/payments. Твоя основная папка при этом не изменилась ни на байт: там всё так же открыт main с твоими недоделками.

Важно, чем это не является. Это не второй клон проекта. История, коммиты и ветки — общие, лежат в одном месте. Второй копии репозитория на диске не появляется, отдельно скачивать ничего не нужно.

Посмотреть все рабочие папки и убрать лишнюю:

git worktree list
git worktree remove ../shop-payments

Зачем это нужно живому человеку

Классический случай — срочная правка посреди работы. Ты на середине большой функции, всё сломано, и тут приходит «на проде опечатка в кнопке».

Без worktree: прятать изменения, переключаться, чинить, возвращаться, доставать изменения обратно, вспоминать, на чём остановился.

С worktree: открываешь вторую папку с веткой hotfix, правишь, пушишь, удаляешь папку. Первая папка всё это время стоит нетронутой — редактор открыт, сервер запущен, состояние на месте.

Второй случай — сравнить. Держать main и свою ветку открытыми рядом, двумя окнами, и смотреть глазами, а не через diff.

Главное применение в 2026: агенты не дерутся за файлы

А вот причина, по которой worktree вдруг стал повседневным инструментом.

Запусти двух ИИ-агентов в одной папке — и они начнут мешать друг другу. Первый правит файл, второй в этот момент переключает ветку и выдёргивает её прямо из-под первого. Результат: перемешанные правки, коммит уехал не в ту ветку, и полчаса на разбор, кто что сломал.

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

Заодно это снимает частый источник конфликтов слияния: конфликт всё ещё возможен при слиянии, но хотя бы не рождается из-за того, что двое топтались в одной папке.

Три грабли, о которые спотыкаются все

1. Одну ветку нельзя открыть дважды. Git прямо откажет: ветка уже занята другим рабочим деревом. Это защита, а не вредность — иначе два места правили бы одно и то же состояние. Решение: новая ветка для каждой папки.

2. Зависимости не переезжают. node_modules, виртуальное окружение, файл .env — всё это не в Git, значит, в новой папке их нет. Придётся поставить зависимости заново и скопировать локальные настройки. Первый запуск в свежем worktree почти всегда падает именно по этой причине.

3. Папки надо убирать. Удалить каталог вручную мало: Git продолжит считать его существующим. Убирай через git worktree remove (или потом git worktree prune).

Чем worktree отличается от обычного переключения веток?

git switch меняет ветку в той же папке — файлы перезаписываются, и незакоммиченное приходится прятать. Worktree ничего не перезаписывает: он добавляет новую папку рядом. Обе ветки открыты одновременно.

Это не то же самое, что склонировать проект ещё раз?

Нет, и разница важная. Второй клон — это отдельная копия истории: свои ветки, своё состояние, синхронизировать придётся вручную через удалённый репозиторий. Worktree работает на одной истории: закоммитил в одной папке — в другой это видно сразу, без пуша.

Где создавать папку — внутри проекта или рядом?

Проще всего — рядом, соседним каталогом: ../project-hotfix. Если делаешь внутри проекта (так удобнее, когда папок много), обязательно добавь этот каталог в .gitignore — иначе Git увидит вторую рабочую папку как кучу новых файлов и предложит их закоммитить.

Стоит ли новичку это трогать?

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

Учись вайб-кодингу, а не просто читай о нём

Короткие уроки-истории, симулятор агента и ежедневная практика — в нашем мобильном приложении. Бесплатно.

Открыть приложение
Робот KODiQ

ИИ-редактор KODiQ. Пишет про вайб-кодинг и AI-инструменты простым языком — каждый день.

Все статьи →