Git Worktree
Тема дорожной карты · Изучи Git
Git worktree — это мощный инструмент для работы с несколькими рабочими копиями одного и того же репозитория. Это особенно полезно, когда вам нужно одновременно работать с несколькими ветками или вести несколько проектов из одного репозитория. Используя git worktree add <path> <branch>, вы можете извлечь конкретную ветку в отдельную директорию, что упрощает процесс ревью PR, тестирования долгих билдов или внесения hotfix в основную ветку без необходимости использовать git stash.
Каждая worktree имеет свой рабочий каталог и состояние HEAD, но они все используют общую базу объектов в .git/, что делает использование worktree более эффективным по сравнению с созданием второго клонирования репозитория. Это позволяет значительно сэкономить место на диске и ускорить процесс работы с репозиторием.
Как это работает
Git worktree позволяет создавать несколько рабочих копий одного репозитория, что упрощает работу с несколькими ветками или проектами. В отличие от подмодулей (submodules), которые встраивают один репозиторий в другой, worktree создает несколько рабочих копий одного репозитория, используя общую базу данных. Это делает worktree более гибким и удобным для работы с несколькими ветками или проектами.
Когда вы используете команду git worktree add <path> <branch>, она создает новую рабочую копию в указанном пути и ветке. Это позволяет вам работать с несколькими ветками или проектами из одного репозитория, не теряя текущее состояние или не используя git stash. Каждая worktree имеет свой рабочий каталог и состояние HEAD, но они все используют общую базу данных в .git/.
Когда применять
Git worktree особенно полезен, когда вам нужно одновременно работать с несколькими ветками или проектами из одного репозитория. Это позволяет вам избежать необходимости использования git stash или git checkout, что упрощает процесс работы с репозиторием. Кроме того, использование worktree позволяет значительно сэкономить место на диске и ускорить процесс работы с репозиторием.
Типичные ошибки
Одной из распространенных ошибок при использовании git worktree является попытка использовать одну и ту же ветку в нескольких worktree. Это приводит к конфликту и ошибке, так как одна и та же ветка не может быть использована в нескольких worktree. В этом случае вам нужно будет удалить ненужную worktree с помощью команды git worktree remove <path> и затем повторить попытку.
Другой распространенной ошибкой является попытка использовать подмодули (submodules) вместо worktree. Подмодули могут быть полезны, когда вам нужно встраивать один репозиторий в другой, но они также могут стать источником проблем, особенно если вы не используете флаг --recursive. Подмодули могут также привести к проблемам, если они запинены на движущуюся ветку вместо тега.