Git Worktrees Tutorial #4 - Worktree- First Approach
Summary
Git Worktrees: Підхід «Worktree-First»
Цей посібник демонструє ефективний робочий процес використання Git Worktrees на основі «голого» (bare) репозиторію. Основна ідея полягає в тому, щоб зберігати всі робочі дерева в окремих папках поруч із прихованою директорією .git, що дозволяє одночасно працювати над кількома гілками без необхідності перемикання контексту через git stash.
Q: Яка структура проекту рекомендується при використанні підходу «Worktree-First»?
A: Рекомендується створити головну директорію проекту (наприклад, portfolio), всередині якої розміщується bare-репозиторій у папці .git. Усі робочі дерева (worktrees) створюються як піддиректорії в цій же головній папці. Наприклад, папка main служить для відстеження стабільної версії коду, а окремі папки на кшталт feature-abc або hotfix-123 створюються для конкретних завдань. Це дозволяє тримати всі файли проекту та історію Git в одному організованому місці.
Q: Як створити нове робоче дерево для конкретної гілки?
A: Для створення нового робочого дерева використовується команда git worktree add. Якщо потрібно створити нову гілку одночасно з деревом, додається прапор -b. Наприклад, команда git worktree add -b feature-abc ./feature-abc створить нову папку feature-abc, ініціалізує в ній нову гілку з такою ж назвою та витягне туди файли проекту. Це дозволяє миттєво почати роботу над новою функцією в ізольованому середовищі.
Q: У чому перевага використання окремого робочого дерева для гілки main?
A: Робоче дерево main використовується переважно як еталон (reference). Замість того, щоб вносити туди правки, розробник використовує його для отримання останніх оновлень з віддаленого репозиторію (git pull). Це дозволяє в будь-який момент переглянути актуальний стан коду або використати його як базу для нових гілок, не перериваючи роботу в інших активних деревах.
Q: Який алгоритм дій при виникненні термінового завдання (наприклад, hotfix) під час роботи над фічею?
A: Замість використання git stash для збереження незавершених змін, розробник просто виходить з поточної директорії фічі у корінь проекту та створює нове робоче дерево: git worktree add -b hotfix-123 ./hotfix-123. Після виконання виправлень, коміту та пушу в GitHub, це тимчасове робоче дерево можна видалити командою git worktree remove ./hotfix-123, при цьому основна робота над фічею залишиться недоторканою в її власній папці.
Review Questions:
- Чому автор рекомендує виходити в батьківську директорію перед створенням нового робочого дерева?
- Яка команда дозволяє переглянути список усіх активних робочих дерев у проекті?
- Як оновити локальну копію
mainпісля злиття Pull Request на GitHub при використанні системи worktrees?
Key Points
- 1
Використання bare-репозиторію дозволяє зберігати службові файли Git окремо від робочих файлів проекту.
- 2
Кожне робоче дерево (worktree) є окремою фізичною папкою, що відповідає певній гілці Git.
- 3
Підхід дозволяє уникнути використання
git stashабо створення тимчасових комітів при перемиканні між завданнями. - 4
Робоче дерево для гілки
mainзручно використовувати як актуальний довідник коду. - 5
Після завершення роботи над гілкою та її злиттям, відповідну папку worktree можна безпечно видалити командою
git worktree remove. - 6
Організація всіх дерев всередині однієї кореневої папки проекту спрощує навігацію та управління кодом.
- 7
Зміни в одному робочому дереві не впливають на файли в іншому, що забезпечує повну ізоляцію процесів розробки.