git worktree - одновременная работа с несколькими ветками
Git позволяет работать одновременно с несколькими ветками одного репозитория в разных каталогах.
Создать каталог с веткой:
git worktree add path/ branch
Причем можно создать разом и каталог, и ветку:
git worktree add -b newbranchname ../newdirname sourcebranch
Просмотреть все каталоги с ветками:
git worktree list
Каталог с веткой перенести в другое место:
git worktree move old-path/ new-path/
После окончания работы с веткой каталог с деревом удалить:
git worktree remove path/
Попросить git почистить сведения о каталогах-деревьях, которые были удалены не через git, а как попало :)
git worktree prune
- В таких каталогах нет привычного каталога .git! Там файл .git (именно файл). В нем написано что-то вроде
gitdir: /path/to/main/repo/.git/worktrees/my-worktree-dirname. - Нельзя сделать два каталога с одной веткой.
- Нельзя удалить ветку, если на нее смотрит какой-то из worktree. Гит об этом скажет. Сначала надо удалить этот worktree.
- В основном, git тут работает как обычно. Пуш пушит, пулл пуллит, коммит коммитит, всё такое. Идеешечки тоже обычно понимают, как тут быть :)
Непоследовательность метафоры в русском — капец, конечно. Ветка branch репозитория, дерево worktree – кажется, каталогов и файлов. В результате говорим о ветках и деревьях, но это не того дерева ветка, не той ветки дерево!
