git worktree
git worktree: gerenciar vários diretórios de trabalho vinculados a um mesmo repositório.
O comando git worktree permite fazer checkout do mesmo repositório Git em vários diretórios ao mesmo tempo. Cada worktree tem seus próprios arquivos, seu próprio HEAD e seu próprio diretório de trabalho, então você pode manter branches diferentes abertas lado a lado sem ficar trocando de uma para outra dentro de um único diretório.
Todos os worktrees continuam pertencendo ao mesmo repositório e compartilham o mesmo banco de dados de objetos do Git e a maior parte dos metadados do repositório. Isso torna um worktree bem mais leve do que criar um segundo clone completo só para inspecionar outra branch, corrigir um bug urgente ou fazer um experimento rápido isolado dos seus arquivos atuais.
Um caso de uso comum é deixar um agente de IA trabalhar em uma tarefa em paralelo com o seu trabalho principal. A IA trabalha na própria branch, com checkout feito em um diretório separado. Assim, o agente de IA não consegue bagunçar o seu diretório de trabalho principal, onde você pode continuar programando na mão. Em essência, criar um worktree é parecido com clonar o repositório em outro diretório, mas é um pouco mais rápido.
Git worktree vs. clone completo em um diretório separado
Prós dos worktrees
- Mais rápido de criar, porque não precisa copiar todos os dados do repositório.
- Usa menos espaço em disco, porque os dados do repositório são compartilhados entre os worktrees no mesmo computador.
- Muitas ferramentas de desenvolvimento hoje integram worktrees, especialmente em fluxos de trabalho com agentes de IA.
Contras dos worktrees
- Normalmente não dá para fazer checkout da mesma branch em dois worktrees ao mesmo tempo.
- Alterar a configuração do repositório ou dar um fetch afeta todos os worktrees vinculados a esse repositório.
- Se você precisa de um sandbox totalmente independente, com remotos ou configuração separados, um clone completo costuma ser melhor.
Exemplos
Crie um novo worktree para uma branch existente chamada release:
git worktree add ../project-release releaseCrie um novo worktree, crie uma nova branch chamada hotfix/login e inicie essa branch a partir da main:
git worktree add -b hotfix/login ../project-hotfix mainListe todos os worktrees vinculados ao repositório atual:
git worktree listRemova um worktree quando não precisar mais dele:
git worktree remove ../project-hotfix.gitignoregit checkoutgit configgit taggit worktree