Команди Git

git worktree

git worktree: керувати кількома робочими деревами, прикріпленими до одного репозиторію.

Команда git worktree дозволяє розгорнути один Git-репозиторій одразу в кількох директоріях. Кожне таке робоче дерево (worktree) має власні файли та власний HEAD, тож різні гілки можуть бути відкриті поруч — без постійного перемикання туди-сюди в одній директорії.

Всі worktree належать одному репозиторію та спільно використовують базу об'єктів Git і більшість метаданих репозиторію. Тому worktree значно легший за повний другий клон, коли треба просто заглянути в іншу гілку, терміново виправити помилку чи провести швидкий експеримент окремо від поточних файлів.

Типовий сценарій — дати AI-агенту працювати над завданням паралельно з твоєю основною роботою. Агент працює у своїй гілці, розгорнутій в окремій директорії, тож він не залізе у твоє основне робоче дерево, де можна далі писати код руками. По суті, створення worktree схоже на клонування репозиторію в іншу директорію, тільки трохи швидше.

Git worktree vs. повний клон в окремій директорії

Плюси worktree

  • Швидше створюється, бо не потрібно копіювати всі дані репозиторію.
  • Займає менше місця на диску, бо дані репозиторію спільні для всіх worktree на одному комп'ютері.
  • Багато інструментів розробки вже інтегрують worktree, особливо для роботи з AI-агентами.

Мінуси worktree

  • Ту саму гілку зазвичай не можна розгорнути одночасно у двох worktree.
  • Зміна налаштувань репозиторію чи стягування змін через git fetch впливає на всі worktree, прикріплені до цього репозиторію.
  • Якщо потрібна повністю незалежна пісочниця з окремими віддаленими репозиторіями (англ. remotes) чи налаштуваннями, повний клон зазвичай кращий.

Приклади

Створити новий worktree для наявної гілки release:

git worktree add ../project-release release

Створити новий worktree разом із новою гілкою hotfix/login, яка почнеться від main:

git worktree add -b hotfix/login ../project-hotfix main

Показати список усіх worktree, прикріплених до поточного репозиторію:

git worktree list

Видалити worktree, який більше не потрібен:

git worktree remove ../project-hotfix