Git worktree existe desde 2015, mas por muito tempo ficou na categoria das funções esquecidas do Git. Nos últimos dois anos, saiu do papel de curiosidade de power user e entrou no centro do workflow moderno porque resolve uma dor comum: trabalhar em paralelo sem desmontar o contexto atual.
Essa dor aparece de vários jeitos. Você está no meio de uma feature e precisa parar para corrigir um bug em produção. Abre uma revisão antiga e percebe que precisa ajustar um detalhe para o CI voltar a passar. Mantém uma janela do editor para a branch principal e outra para uma refatoração. Ou então deixa um agente de IA rodando mudanças em segundo plano, enquanto continua trabalhando em outra. Em todos esses casos, o problema não é criar branch. O problema é preservar contexto.
O que worktree resolve de verdade
Branch já existia para separar histórico. Worktree resolve outra camada: a pasta de trabalho. Com git worktree, você pode ter vários diretórios ligados ao mesmo repositório, cada um com sua própria branch checkoutada, compartilhando o mesmo histórico Git. Em vez de ficar alternando a mesma pasta entre estados diferentes, você cria contextos separados.
Na prática, isso elimina três incômodos clássicos.
O primeiro é o ciclo de stash, checkout, pull, ajuste, commit, volta, stash pop. Esse ritual funciona, mas cobra atenção demais para tarefas pequenas e urgentes.
O segundo é a bagunça no editor. Trocar de branch na mesma pasta mexe na árvore de arquivos, quebra abas abertas, reinicia indexação, muda dependências e às vezes faz o ambiente perder o fio da meada.
O terceiro é a gambiarra de manter vários clones do mesmo repositório só para conseguir abrir janelas separadas. O clone extra resolve, mas duplica mais coisa do que precisa e dificulta manutenção.
É aí que worktree encaixa tão bem no momento atual. Ele não troca o branch. Ele troca o custo de contexto.
O fluxo antigo ficou caro demais
O post recente do GitHub Blog explica bem por que a popularidade cresceu agora, não em 2016. O desenvolvimento ficou mais paralelo. A cultura de review ganhou peso. Hotfixes chegam no meio da sprint. E agentes de IA adicionaram mais sessões concorrentes ao dia a dia.
Antes, alternar branches na mesma pasta era tolerável porque muita gente fazia uma coisa por vez. Hoje esse modelo começa a ranger. Um dev pode estar codando uma feature, revisando outra, validando um patch de produção e acompanhando um agente gerando mudanças em segundo plano. Quando o trabalho vira uma fila de contextos simultâneos, o custo do checkout manual aparece.
É por isso que worktree deixou de parecer truque antigo do Git e virou resposta para uma rotina mais fragmentada.
Hotfix sem desmontar a feature atual
Esse é o caso mais fácil de defender. Você está mexendo em uma feature longa. Surge um bug em produção. Sem worktree, o caminho costuma ser este: guardar mudanças locais, ir para main, atualizar, criar uma branch de hotfix, corrigir, abrir PR, voltar e tentar recuperar o estado mental anterior.
Com worktree, dá para fazer algo assim:
git worktree add ../app-hotfix -b hotfix-login main
Esse comando cria uma nova pasta ao lado do projeto atual, baseada em main, já com a branch hotfix-login. Você abre outra janela do editor, faz o ajuste, sobe o PR e segue a vida. A sua feature original continua intacta na pasta de antes, com as abas, os testes e os arquivos exatamente onde estavam.
Esse detalhe parece pequeno até o dia em que você precisa trocar de assunto cinco vezes na mesma semana. A economia está em não perder o fio.
Review, QA e suporte ao CI ficam mais simples
Worktree também ajuda fora da codificação principal. Imagine uma PR que começou a falhar depois de alguns comentários. Em vez de largar a sua branch atual, você pode abrir um worktree daquela branch de revisão, reproduzir o problema, testar, ajustar e sair.
O ganho aqui é prático. Cada worktree vira uma bancada separada. Um para a feature em andamento. Outro para um bug intermitente. Outro para revisar uma mudança mais sensível. Em times que trabalham com monorepo, builds demorados ou várias integrações, essa separação reduz erros bobos. Você para de misturar artefatos, comandos e arquivos temporários de tarefas diferentes na mesma mesa.
Também muda a conversa com QA e com quem faz suporte interno. Fica mais fácil reproduzir um estado específico sem sacrificar o que você estava fazendo.
Por que agentes de IA aceleraram essa adoção
A parte mais nova dessa história está aqui. Worktrees combinam muito bem com agentes porque eles não são só autocomplete melhorado. Ocupam um diretório, executam comandos, editam arquivos, rodam testes e podem ficar minutos ou horas trabalhando. Colocar dois agentes, ou um agente e um humano, na mesma árvore de trabalho é pedir conflito.
O GitHub diz que worktree virou modo padrão em ferramentas recentes justamente porque agentes e pessoas passaram a trabalhar em paralelo mais do que antes. Outros relatos do ecossistema repetem o mesmo padrão: cada agente ganha sua própria pasta, sua própria branch e seu próprio ciclo de testes.
Isso muda a ergonomia do trabalho. Você pode deixar um agente cuidando de uma issue isolada em ../app-issue-123, enquanto continua tocando outra entrega no diretório principal. Se o agente fizer bagunça, o estrago fica contido naquele contexto. Se der certo, vira PR normal. O ganho maior não é velocidade pura. É isolamento operacional.
Para times que já usam editor, terminal, CI e revisão como partes de um fluxo agentic, worktree virou quase infraestrutura. Ele oferece uma forma simples de separar sessões sem depender de clone completo ou de um festival de stash.
O que muda para o time, não só para quem programa sozinho
Vale fugir da ideia de que worktree é apenas uma preferência individual. Quando um time adota esse padrão, algumas rotinas ficam mais previsíveis.
Hotfix deixa de competir fisicamente com a feature em andamento. Review local passa a ser menos invasivo. Sessões de pareamento com agente ficam mais seguras. E o próprio onboarding melhora, porque o time pode documentar um fluxo simples para trabalho paralelo.
Algo como isto já cobre muito caso real:
git worktree add ../repo-fix-pagamento -b fix-pagamento main
git worktree list
git worktree remove ../repo-fix-pagamento
Não é um novo método de versionamento. É uma forma melhor de operar o versionamento que o time já usa.
Os custos existem, e é melhor olhar para eles de frente
Worktree não é mágica. O próprio GitHub chama atenção para dois problemas comuns.
O primeiro é dependência duplicada. Cada pasta pode precisar do próprio node_modules, ambiente virtual, cache de build ou artefatos locais. Em projetos pesados, isso consome disco rápido.
O segundo é gestão de pastas. Se você criar worktree para tudo e nunca limpar, o diretório pai vira um estacionamento de branches esquecidas.
A documentação do Git também mostra ferramentas para lidar com isso. git worktree list ajuda a enxergar o que está ativo. git worktree remove limpa o que acabou. Há ainda recursos como lock, move, prune e repair, úteis quando um worktree mora em disco externo, foi movido ou ficou órfão.
Ou seja, worktree reduz atrito de contexto, mas cobra um pouco mais de disciplina operacional. Para a maioria dos times, essa troca vale a pena.
Onde worktree faz mais diferença
Nem todo projeto precisa disso o tempo todo. Mas alguns sinais mostram quando worktree deixa de ser detalhe e vira peça central: hotfix frequente, mais de uma frente local ativa, várias janelas do editor abertas e agentes de IA editando código no fluxo real.
Se esse é o seu caso, worktree não é só um comando útil. É uma resposta para uma mudança de ritmo na engenharia de software. O Git já tinha a ferramenta. O que mudou foi o tipo de trabalho que fazemos em cima dela.
No fim, a popularidade recente dos worktrees diz menos sobre modinha de Git e mais sobre o estado atual do desenvolvimento. Hoje o problema central não é criar branches. É sustentar contextos paralelos sem virar refém de stash, checkout e ruído. Nesse cenário, worktree saiu do rodapé da documentação e ganhou lugar fixo na bancada.