git worktree

Espaços de trabalho e projetos grandes

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 prune
[ ] opcional| ou<arg> valor a substituir... repetível--flag opção

Opções

Clique em uma opção para expandir

Iniciante (3)

Lista todas as pastas de trabalho com seu commit e branch.

RecomendadoSaber qual branch está aberto onde

Exemplo

git worktree list

Apaga uma pasta de trabalho (ela não pode ter alterações não commitadas, salvo com --force).

RecomendadoO jeito limpo de apagar um worktree

Exemplo

git worktree remove ../hotfix

Esquece worktrees cujas pastas foram apagadas à mão.

Quando necessárioLimpar depois de apagar uma pasta manualmente

Exemplo

git worktree prune

Escolhendo a opção certa

Trocar de tarefa

Três formas

ComandoSuas ediçõesPastas
git stash + switchGuardadas e depois restauradasUma
git commit (WIP) + switchNum commit temporárioUma
git worktree addIntactoDuas

Exemplos

Branch novo numa pasta nova

git worktree add ../hotfix -b hotfix

Pasta ../hotfix num branch novo.


Branch existente

git worktree add ../review feature/login

Revisar um branch sem sair do seu.


Listar

git worktree list

Cada pasta com seu branch.


Remover

git worktree remove ../hotfix

Apagar a pasta extra.

Exemplos de fluxos de trabalho

1
git worktree add ../hotfix -b hotfix main

Abrir main numa pasta nova

2
cd ../hotfix

Corrigir, commitar e enviar lá

3
git worktree remove ../hotfix

Limpar 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

A:

Sim: um repositório, um histórico; só os arquivos em checkout diferem.