git worktree
Fazer checkout de vários branches ao mesmo tempo em pastas separadas
O comando 'git worktree' dá a um repositório várias pastas de trabalho. Cada pasta tem um branch diferente em checkout, com seus próprios arquivos e área de preparação, enquanto o histórico é compartilhado. É a alternativa ao stash quando você precisa trocar de tarefa: abra o branch urgente em outra pasta e deixe seu trabalho em andamento intacto. Um branch só pode estar em checkout numa pasta de cada vez.
Sinopse
git worktree add [-b <new-branch>] <path> [<commit-ish>]
git worktree list
git worktree remove <worktree>
git worktree pruneOpções
Escolhendo a opção certa
Trocar de tarefa
Três formas
| Comando | Suas edições | Pastas |
|---|---|---|
git stash + switch | Guardadas e depois restauradas | Uma |
git commit (WIP) + switch | Num commit temporário | Uma |
git worktree add | Intacto | Duas |
Exemplos
Branch novo numa pasta nova
git worktree add ../hotfix -b hotfixPasta ../hotfix num branch novo.
Branch existente
git worktree add ../review feature/loginRevisar um branch sem sair do seu.
Listar
git worktree listCada pasta com seu branch.
Remover
git worktree remove ../hotfixApagar a pasta extra.
Exemplos de fluxos de trabalho
git worktree add ../hotfix -b hotfix mainAbrir main numa pasta nova
cd ../hotfixCorrigir, commitar e enviar lá
git worktree remove ../hotfixLimpar ao terminar
Solução de problemas
fatal: 'hotfix' is already used by worktree
Causa: Esse branch está em checkout em outra pasta
Trabalhe naquela pasta, ou remova o worktree antes
Dicas e armadilhas
Boas práticas
- ✓Coloque os worktrees ao lado da pasta principal (../nome), não dentro dela.
Erros comuns
- ✗Apagar à mão uma pasta de worktree — use git worktree remove (ou prune depois).
- ✗Tentar fazer checkout do mesmo branch em duas pastas.
Perguntas frequentes
Sim: um repositório, um histórico; só os arquivos em checkout diferem.