Git Worktree
Última atualização
git worktree permite que um mesmo repositório tenha vários diretórios de trabalho ao mesmo tempo, cada um em uma branch diferente. Em vez de fazer stash do seu trabalho para trocar de branch, você faz checkout da outra branch em uma pasta separada - revise um PR, rode um hotfix ou compile uma branch enquanto edita outra, tudo compartilhando o mesmo histórico .git.
Experimente isto no terminal playground - um shell de verdade no seu navegador, sem nada para instalar.
Sintaxe
| Command | What it does |
|---|---|
git worktree add ../hotfix hotfix | Faz checkout de hotfix em uma pasta irmã |
git worktree add -b new ../new | Cria uma branch e um worktree para ela |
git worktree list | Lista todos os worktrees e suas branches |
git worktree remove ../hotfix | Remove um worktree |
git worktree prune | Limpa entradas obsoletas de worktree |
Exemplo prático
Corrija um bug na main sem perturbar sua branch de feature.
| Step | Command | Result |
|---|---|---|
| 1 | git worktree add ../fix main | main em checkout em ../fix |
| 2 | Corrija e faça commit em ../fix | Hotfix feito na main |
| 3 | git worktree remove ../fix | Limpeza; a branch de feature ficou intacta |
Perguntas frequentes sobre git worktree
O que é um git worktree?
Um worktree é um diretório de trabalho adicional vinculado ao mesmo repositório, com checkout em uma branch ou commit diferente. Ele permite ter várias branches em checkout ao mesmo tempo em pastas separadas, todas compartilhando um único histórico
.git - assim você não precisa fazer stash nem clonar para trabalhar em duas branches ao mesmo tempo.Como adiciono um worktree?
Rode
git worktree add <path> <branch>, por exemplo git worktree add ../hotfix hotfix. O Git faz checkout dessa branch na nova pasta. Para criar uma branch nova ao mesmo tempo, use git worktree add -b <newbranch> <path>.Quando devo usar um worktree em vez de trocar de branch?
Use quando trocar de branch for prejudicial - você tem trabalho não commitado, uma compilação longa que não quer interromper ou precisa comparar duas branches lado a lado. Um worktree entrega a outra branch na própria pasta sem tocar na atual.
Como removo um worktree?
Rode
git worktree remove <path>. Se a pasta foi apagada manualmente, rode git worktree prune para limpar o registro obsoleto. Você não pode remover o worktree principal (a pasta original do repositório), apenas os extras que você adicionou.Posso praticar isto online?
Sim. Abra o terminal playground para rodar
git worktree em um shell de verdade no seu navegador - sem nada para instalar. O curso interativo e gratuito de Git da Coddy também cobre os fluxos de trabalho com branches passo a passo.