Inteligência artificial, sem ruído.
Tutoriais5 min

Git Worktrees para desenvolvimento com IA: como rodar múltiplos agentes sem conflito

Tutorial prático: como usar Git Worktrees para rodar múltiplos agentes de IA (Claude Code, Codex) em paralelo sem conflitos, com referência de comandos e troubleshooting.

Git Worktrees para desenvolvimento com IA: como rodar múltiplos agentes sem conflito

Você está rodando o Claude Code em uma branch de feature. O agente já trabalhou por 20 minutos, leu sua base de código e começou a fazer progresso real. Então chega a mensagem no Slack: produção caiu, alguém precisa de um hotfix no main agora. Você faz stash, troca de branch, perde todo o contexto que o agente construiu, corrige o bug, volta — e gasta mais 10 minutos reorientando o agente.

Se estiver rodando dois agentes em paralelo no mesmo diretório, a situação é pior: ambos editam os mesmos arquivos, e o segundo sobrescreve o primeiro silenciosamente. Nenhum aviso. Apenas trabalho corrompido que você descobre uma hora depois.

Os Git Worktrees eliminam essa classe inteira de problemas. Não são uma invenção nova — o recurso existe desde o Git 2.5 (2015) — mas a onda de agentes de IA para código em 2025-2026 os tornou infraestrutura essencial.

O que são Git Worktrees

Um repositório Git padrão tem um único diretório de trabalho. Para alternar entre branches, você muda todos os arquivos daquele diretório. Se tem trabalho não commitado, precisa fazer stash. Se o agente de IA está no meio de uma tarefa, você o interrompe.

Um worktree é um diretório separado fazendo checkout do mesmo repositório. Você pode ter quantos precisar, cada um em sua própria branch, todos coexistindo simultaneamente no sistema de arquivos:

meu-projeto/                    # worktree principal  (branch: main)
meu-projeto-feat-auth/          # worktree vinculado  (branch: feat/auth)
meu-projeto-feat-api/           # worktree vinculado  (branch: feat/api)
meu-projeto-hotfix-login/       # worktree vinculado  (branch: hotfix/login)

Todos os diretórios compartilham a mesma pasta .git. Compartilham histórico, objetos e commits. Mas cada um tem seus próprios arquivos, seu próprio índice e seu próprio estado de trabalho. Um agente editando em meu-projeto-feat-auth/ não pode ver nem tocar em nada dentro de meu-projeto-feat-api/.

Por que isso é melhor que múltiplos clones? A alternativa ingênua é clonar o repositório duas vezes. Isso duplica todo o histórico em disco, os commits em um clone não são imediatamente visíveis no outro, e não há coordenação entre eles na camada Git. Com worktrees, você clona uma vez. Cada worktree adicional custa apenas o espaço dos arquivos em checkout.

Os 7 comandos que você precisa

ComandoO que faz
git worktree add <caminho> -b <branch>Cria novo worktree em nova branch
git worktree add <caminho> <branch>Checkout de branch existente em novo worktree
git worktree listLista todos os worktrees ativos com branches e hashes
git worktree lock <caminho>Impede que o worktree seja removido (use com agente rodando)
git worktree unlock <caminho>Libera o bloqueio
git worktree remove <caminho>Remove o worktree após merge
git worktree pruneLimpa metadados de worktrees removidos manualmente
Referência rápida dos comandos essenciais de Git Worktree

Rodando agentes de IA em paralelo

O fluxo real com agentes como Claude Code ou Codex:

# Criar worktrees isolados para cada tarefa
git worktree add ../meu-projeto-feat-auth -b feat/auth
git worktree add ../meu-projeto-hotfix -b hotfix/login

# Cada worktree é um diretório independente
cd ../meu-projeto-feat-auth && claude "implemente autenticação OAuth"
cd ../meu-projeto-hotfix && claude "corrija o bug de timeout no login"

Cada agente trabalha em seu próprio diretório, em sua própria branch, sem risco de colisão. Nenhum arquivo é sobrescrito. Quando ambas as tarefas terminam, você faz merge de cada branch no main como faria normalmente.

Dica prática: use git worktree lock enquanto um agente está ativo para evitar remoção acidental. Ao terminar a tarefa e fazer merge, use git worktree remove para liberar o espaço.

Evitando que os worktrees fiquem desatualizados

Worktrees não se atualizam sozinhos. Se o main avança enquanto seu agente trabalha em feat/auth, você precisa sincronizar manualmente:

# Do worktree da feature
git fetch origin
git rebase origin/main   # ou git merge origin/main

Estabeleça uma rotina: antes de iniciar um agente, faça rebase. Após concluir, faça rebase novamente antes do merge. Isso mantém o histórico limpo e evita conflitos surpresa.

Erros comuns e correções

  • ❌ “fatal: ‘xyz’ is already checked out” → Você tentou criar um worktree para uma branch que já está em checkout em outro lugar. Use git worktree list para encontrar onde e mude para lá ou remova o worktree antigo.
  • ❌ “fatal: invalid reference” → A branch que você especificou não existe. Crie-a com -b ou verifique o nome.
  • ❌ Worktree órfão após remover diretório manualmente → Se você deletou a pasta sem usar git worktree remove, execute git worktree prune para limpar os metadados.
  • ❌ Merge conflict ao tentar remover worktree → O Git não remove worktrees com alterações não commitadas. Faça commit ou stash antes de remover.
  • ❌ Agentes conflitando em package.json → Isso acontece quando ambos estão no mesmo diretório. Worktrees resolvem isso completamente: cada agente tem sua própria cópia do arquivo.

Por que isso importa agora

Em 2026, 51% dos desenvolvedores profissionais usam ferramentas de IA diariamente, mas apenas 17% dos que usam agentes de IA dizem que essas ferramentas melhoraram a colaboração em equipe. A lacuna entre esses números não é um problema de ferramenta — é um problema de infraestrutura. Times adotaram agentes de IA sem a camada de workflow por baixo.

Git Worktrees são essa camada. Simples, nativos do Git desde 2015, e resolvem o problema fundamental de agentes trabalhando em paralelo sem se atropelarem.


Descubra mais sobre noticiAI

Assine para receber nossas notícias mais recentes por e-mail.

R
Sobre o autorRedação Noticiai

Equipe editorial dedicada a explicar inteligência artificial com clareza, independência e contexto.