Menu
Coddy logo textTech

Git Worktree

Последнее обновление

git worktree позволяет одному репозиторию иметь несколько рабочих каталогов одновременно, каждый на своей ветке. Вместо того чтобы прятать работу через stash для смены ветки, вы переключаетесь на другую ветку в отдельной папке - проверьте PR, примените хотфикс или соберите одну ветку, редактируя другую, при этом всё использует одну и ту же историю .git.

Попробуйте это в терминальном playground - настоящая оболочка в вашем браузере, ничего устанавливать не нужно.

Синтаксис

CommandWhat it does
git worktree add ../hotfix hotfixПереключается на hotfix в соседней папке
git worktree add -b new ../newСоздаёт ветку и worktree для неё
git worktree listВыводит список всех worktree и их веток
git worktree remove ../hotfixУдаляет worktree
git worktree pruneОчищает устаревшие записи worktree

Разбор примера

Исправьте баг в main, не трогая свою ветку с фичей.

StepCommandResult
1git worktree add ../fix mainmain переключена в ../fix
2Исправьте и закоммитьте в ../fixХотфикс сделан в main
3git worktree remove ../fixОчистка; ветка с фичей осталась нетронутой

Частые вопросы о git worktree

Что такое git worktree?
Worktree - это дополнительный рабочий каталог, привязанный к тому же репозиторию и переключённый на другую ветку или коммит. Он позволяет держать несколько веток переключёнными одновременно в отдельных папках, при этом все используют одну историю .git - так что вам не нужно прятать изменения через stash или клонировать, чтобы работать над двумя ветками сразу.
Как добавить worktree?
Выполните git worktree add <path> <branch>, например git worktree add ../hotfix hotfix. Git переключит эту ветку в новую папку. Чтобы одновременно создать новую ветку, используйте git worktree add -b <newbranch> <path>.
Когда использовать worktree вместо смены ветки?
Используйте его, когда смена ветки была бы неудобной - у вас есть незакоммиченная работа, долгая сборка, которую вы не хотите прерывать, или нужно сравнить две ветки рядом. Worktree даёт вам другую ветку в её собственной папке, не трогая текущую.
Как удалить worktree?
Выполните git worktree remove <path>. Если папка была удалена вручную, выполните git worktree prune, чтобы очистить устаревшие записи. Нельзя удалить основной worktree (исходную папку репозитория), только те дополнительные, что вы добавили.
Можно ли попрактиковаться в этом онлайн?
Да. Откройте терминальный playground, чтобы выполнить git worktree в настоящей оболочке в вашем браузере - ничего устанавливать не нужно. Бесплатный интерактивный курс Git от Coddy также пошагово охватывает рабочие процессы с ветками.
Coddy programming languages illustration

Изучайте Git с Coddy

НАЧАТЬ