Git Worktree позволяет работать с несколькими ветками одновременно в одном репозитории, используя разные рабочие директории. Это избавляет от необходимости клонировать репозиторий несколько раз или постоянно переключать ветки.

  • Каждая ветка "живёт" в отдельной директории, но все они связаны с одним репозиторием (общие объекты .git).
  • Можно редактировать код в одной ветке, запускать тесты в другой, просматривать историю в третьей — без git switch.

`git worktree add <путь/к/папке> <ветка> // Добавляем git worktree list // Выводим список текущих git worktree remove <путь/к/папке>

  • Экономия места: Нет дублирования истории (общий .git).
  • Изоляция: Каждая ветка в отдельной папке.
  • Производительность: Не нужно переключать ветки для мелких задач.

Казалось бы, а в чем сложность перейти на другую ветку? Мне видится полезность при таком сценарии: У тебя есть фича, которая делается достаточно долго. И тут тебе прилетает задачка подвигать по экрану кнопку. Чтобы перейти на main-ветку, придется совершить много телодвижений. Если же настроить main и feature ветки как git worktree - не надо никуда переключаться.

В чем же отличие от сценария, когда проект просто клонируется в разные папки несколько раз?

  • Все рабочие деревья делят один .git-каталог (объекты, история, конфиги).
  • Изменения мгновенно видны во всех рабочих деревьях.
  • Все ветки контролируются из единого хранилища. (git branch, git log e.t.c.)`