🌍 Добрай раніцы! 👋🏻
TL;DR
- git-worktree позволяет иметь несколько рабочих директорий в одном репозитории с общим .git
- Команды: `git worktree add ./path -b branch`, `add ./path branch`, `list`, `remove ./path`, `prune`
- AI-агенты используют разные worktree для параллельной работы над задачами в изолир…
🌍 Добрай раніцы! 👋🏻
Ну что ребятки наступило время "жира" ✊, я стал чутка свободнее, хотя это утверждение сильно натянутое, так как список моих дел и планов как будто бы не имеет конца.
Cегодня спич пойдет про штуку, для которой пост давно лежал у меня в бэклоге полуготовым и нужно вам его отдать, пока он полностью не потерял свою актуальность.
Речь пойдет про
🚀 Мотивация
Тут все просто, я сам не знал этой команды, до того момента пока не стал много кодить при помощи инструментов AI. А так как сейчас и очевидно в будущем, все будет двигаться относительно AI, переоценить важность понимания данной команды сильно сложно.
❓ Что за дерево?
Каждое дерево (папка) привязано к своей ветке/коммиту, но все они шарят общий
Структура выглядит примерно так:
B линкованных worktree
❓ А что нам вообще даёт общий .git?
➡️ Один `git fetch` на всех — подтянули
➡️ Stash тоже общий — можно
➡️ Hooks одни на всех — настроили
А вот все остальное, что нам нужно для работы у каждого свое:
❓ И почему это стало актуально?
Сейчас всё больше разработчиков используют AI-агентов (
Флоу +- такой:
🟠 Вы работаете над фичей в основной директории
🟠 Агент параллельно фиксит баг в
🟠 Другой агент пишет тесты в третьем
🔖
➡️ Буквально пара основных команд
1️⃣ Создать новый
Это создаст папку
2️⃣ Можно создать worktree для существующей ветки:
3️⃣ Посмотреть все
4️⃣Удалить worktree когда закончили:
5️⃣Почистить мусор (если папку удалили вручную):
💡 Полезности
➡️ Одна ветка = один
➡️
➡️
➡️ Не забудьте добавить
🔭 Вывод
Если вы до сих пор используете
💬 Делитесь своим мнением в комментариях👇!
🙌 Если вам понравился пост, не забудьте поставить лайк! 👍
😃 А если еще и пошарите коллегам, вообще песня, почти как котика спасти.
#AI #GIT
Ну что ребятки наступило время "жира" ✊, я стал чутка свободнее, хотя это утверждение сильно натянутое, так как список моих дел и планов как будто бы не имеет конца.
Cегодня спич пойдет про штуку, для которой пост давно лежал у меня в бэклоге полуготовым и нужно вам его отдать, пока он полностью не потерял свою актуальность.
Речь пойдет про
git-worktree 🌳🚀 Мотивация
Тут все просто, я сам не знал этой команды, до того момента пока не стал много кодить при помощи инструментов AI. А так как сейчас и очевидно в будущем, все будет двигаться относительно AI, переоценить важность понимания данной команды сильно сложно.
❓ Что за дерево?
git worktree это набор команд, которые позволяют иметь несколько рабочих директорий (working trees) в рамках одного репозитория. Каждое дерево (папка) привязано к своей ветке/коммиту, но все они шарят общий
.git.Структура выглядит примерно так:
tg-project/ ← основной worktree (ветка main)
├── .git/ ← настоящий .git, тут вся история
├── src/
└── worktrees/
├── fix-bug/ ← worktree №2 (ветка fix-bug)
│ ├── .git ← НЕ папка, а файл-указатель на основной .git
│ └── src/
└── feature-x/ ← worktree №3 (ветка feature-x)
├── .git ← тоже файл-указатель
└── src/B линкованных worktree
.git — это файл, а не папка. ❓ А что нам вообще даёт общий .git?
➡️ Один `git fetch` на всех — подтянули
origin/main в одном месте, во всех worktree уже актуальная информация.➡️ Stash тоже общий — можно
git stash в одном worktree, а git stash pop сделать в другом.➡️ Hooks одни на всех — настроили
pre-commit, будет работать во всех worktree.А вот все остальное, что нам нужно для работы у каждого свое:
HEAD (текущая позиция), index (staging), рабочие файлы, состояние мержа / cherry-pick / bisect.❓ И почему это стало актуально?
Сейчас всё больше разработчиков используют AI-агентов (
Claude Code, Cursor, Copilot agent) для параллельной работы над задачами. И вот тут начинается битва за быстродействие, у меня обычно открыто 3-7 сессий 🤯:Флоу +- такой:
🟠 Вы работаете над фичей в основной директории
🟠 Агент параллельно фиксит баг в
worktree рядом🟠 Другой агент пишет тесты в третьем
worktree🔖
Worktree = изоляция. Каждый агент получает свою песочницу, свою ветку, свои файлы. При этом всё в одном репозитории.➡️ Буквально пара основных команд
1️⃣ Создать новый
worktree с новой веткой:git worktree add ./worktrees/fix-bug -b fix-bugЭто создаст папку
./worktrees/fix-bug с веткой fix-bug на основе текущей ветки. Заходим туда и работаем как обычно.2️⃣ Можно создать worktree для существующей ветки:
git worktree add ./worktrees/feature-x feature-x3️⃣ Посмотреть все
worktree:git worktree list4️⃣Удалить worktree когда закончили:
git worktree remove ./worktrees/fix-bug5️⃣Почистить мусор (если папку удалили вручную):
git worktree prune💡 Полезности
➡️ Одна ветка = один
worktree. Нельзя открыть одну и ту же ветку в двух worktree одновременно➡️
.env файлы не копируются автоматически — нужно скопировать руками или автоматизировать, вообще все что в .gitignore, переносится только то, что git трекает.➡️
node_modules тоже не шарятся — в каждом worktree нужна своя установка пакетов.➡️ Не забудьте добавить
worktrees в .gitignore, чтобы не закоммитить случайно.🔭 Вывод
Если вы до сих пор используете
stash и(или) clone для переключения между задачами, прекращайте так делатaть, worktree это сейчас must have. 💬 Делитесь своим мнением в комментариях👇!
🙌 Если вам понравился пост, не забудьте поставить лайк! 👍
😃 А если еще и пошарите коллегам, вообще песня, почти как котика спасти.
#AI #GIT

Хотите больше таких постов?
Подпишитесь на канал и читайте продолжение в Telegram.