git worktree
позволяет создавать несколько рабочих директорий, связанных с одним репозиторием Git. Это полезно для одновременной работы над разными ветками или фичами, не переключаясь между ними и не создавая конфликты. Например, можно одновременно разрабатывать новую функциональность в одной worktree и исправлять баг в другой, основанной на другой ветке. Использование git worktree add <путь> <ветка>
создает новую рабочую директорию, а git worktree remove <путь>
удаляет её. Удаление worktree не удаляет ветку в репозитории.
git worktree
- это мощный инструмент Git, позволяющий иметь несколько рабочих копий (working directories) одного и того же репозитория одновременно, привязанных к разным веткам или коммитам. Это означает, что вы можете работать над несколькими фичами, исправлять баги или тестировать разные версии проекта параллельно, не переключаясь постоянно между ветками и избегая потенциальных конфликтов.
Зачем нужен git worktree
:
git checkout
, который может быть ресурсоемким, особенно для больших репозиториев. Переключение между рабочими копиями происходит мгновенно.Как использовать git worktree
:
git worktree add <путь_к_новой_рабочей_копии> [<ветка_или_коммит>]
git worktree add feature/new-feature
(создаст рабочую копию в папке `feature/new-feature` и переключит её на ветку `feature/new-feature`)git worktree add hotfix/urgent-bug origin/release/1.2.3
(создаст рабочую копию в папке `hotfix/urgent-bug` и переключит её на ветку `origin/release/1.2.3`)
git worktree list
git worktree remove <путь_к_рабочей_копии>
(если рабочая копия не содержит незафиксированных изменений)git worktree force remove <путь_к_рабочей_копии>
(для принудительного удаления, даже если есть незафиксированные изменения - будьте осторожны!)
git worktree move <путь_к_старой_рабочей_копии> <путь_к_новой_рабочей_копии>
git worktree lock <путь_к_рабочей_копии> [<причина>]
(предотвращает удаление)
git worktree unlock <путь_к_рабочей_копии>
Важно помнить:
.git
, но все они разделяют один и тот же репозиторий .git
(общий для всех рабочих копий и расположенный в основном репозитории).git worktree prune
удаляет метаданные о рабочих копиях, которые больше не существуют. Это полезно для очистки репозитория после удаления рабочих копий вручную.git branch --show-current
покажет текущую ветку для активной рабочей копии.Использование git worktree
позволяет значительно повысить эффективность и гибкость разработки, особенно в командной среде.