Git worktrees¶
Git worktrees permite ter múltiplas branches em diretórios separados, compartilhando o mesmo .git. Útil para reviews, hotfixes ou experimentos sem interromper o trabalho atual.
Conceito¶
Um worktree é um diretório adicional linkado ao mesmo repositório. Cada um pode estar em uma branch diferente.
# Criar worktree para revisar PR
git worktree add ../meu-repo-review feature/nova-api
# Resultado:
# ~/projetos/meu-repo/ (branch: sua-feature)
# ~/projetos/meu-repo-review/ (branch: feature/nova-api)
Ambos compartilham o .git: commits e branches ficam sincronizados.
Comandos¶
# Criar worktree de branch existente
git worktree add ../path branch-name
# Criar worktree com nova branch
git worktree add -b nova-branch ../path main
# Listar worktrees
git worktree list
# Remover worktree
git worktree remove ../path
# Forçar remoção (se tiver mudanças)
git worktree remove --force ../path
# Limpar worktrees órfãos
git worktree prune
Exemplo: revisão de PR¶
git fetch origin
git worktree add ../projeto-review origin/feature-x
cd ../projeto-review
# revisar, testar
cd ../projeto
git worktree remove ../projeto-review
Exemplo: hotfix¶
git worktree add -b hotfix/bug-123 ../projeto-hotfix main
cd ../projeto-hotfix
# corrigir
git commit -am "fix: corrige bug 123"
git push -u origin hotfix/bug-123
cd ../projeto
git worktree remove ../projeto-hotfix
Dicas¶
- Use sufixos consistentes:
-review,-hotfix,-experiment - Mantenha worktrees no mesmo nível do repo principal
- Remova worktrees quando terminar
- Cada worktree pode ser projeto separado na IDE
Limitações¶
Uma branch só pode estar em um worktree por vez. Submodules precisam de atenção extra.