Guia de fluxo com Git

OpenCode Worktree: isole tarefas de programação com Git

Um OpenCode worktree é uma árvore de trabalho vinculada do Git: cada tarefa tem sua pasta e branch, mas compartilha o histórico do repositório. Crie-a com Git, entre nessa pasta e inicie o OpenCode ali. Isso ajuda quando tarefas paralelas precisam de arquivos e limites de revisão separados.

Três áreas de tarefa do OpenCode separadas e conectadas a um repositório Git compartilhado
Ilustração conceitual: cada worktree tem seu checkout e compartilha o histórico Git.

Resposta rápida

Use Git worktrees para separar tarefas paralelas do OpenCode

O Git gerencia worktrees vinculados; o OpenCode roda na pasta de projeto aberta. Cada worktree tem arquivos, índice e branch próprios, mas compartilha o histórico e os objetos Git. Use-o quando duas tarefas independentes editariam o mesmo checkout. Ele não isola bancos de dados, serviços do ambiente, segredos ou arquivos gerados fora do Git.

Um OpenCode worktree é uma árvore de trabalho vinculada do Git: cada tarefa tem sua pasta e branch, mas compartilha o histórico do repositório. Crie-a com Git, entre nessa pasta e inicie o OpenCode ali. Isso ajuda quando tarefas paralelas precisam de arquivos e limites de revisão separados.

Guias relacionados do OpenCode: OpenCode Agents e AGENTS.md · Configuração JSONC do OpenCode · Permissões do OpenCode · Armazenamento de sessões do OpenCode.

1. O que um Git worktree muda para o OpenCode

Um Git worktree é outro diretório de trabalho conectado ao mesmo repositório. O checkout principal pode ficar em main, enquanto uma pasta ao lado usa work/auth. Os arquivos e a branch atual são separados, mas o Git compartilha objetos e histórico; por isso, normalmente não é preciso clonar todo o repositório para cada tarefa.

Esse fluxo não exige um modo especial de worktree no OpenCode. Inicie a CLI dentro do novo diretório e ele será o contexto do projeto. Configurações globais ainda podem valer, mas arquivos locais não rastreados e dados do ambiente não são copiados automaticamente.

2. Criar um worktree vinculado em três etapas seguras

Primeiro confira a branch e as alterações do checkout atual. Um começo limpo facilita identificar o que pertence à tarefa nova. Na raiz do repositório, crie uma branch e seu worktree em uma pasta irmã, fora do diretório original.

O exemplo cria work/auth no commit atual e o coloca em ../app-auth. Se a branch já existir, confirme que outro worktree não a está usando antes de reutilizá-la. O Git normalmente impede que a mesma branch fique ativa em vários worktrees vinculados.

Execute estes comandos na raiz do repositório principal. A nova branch começa no commit atual.

Exemplo: criar e abrir um worktree de funcionalidade
git status --short --branch
git worktree add -b work/auth ../app-auth
cd ../app-auth
opencode
git worktree list
git -C ../app-auth status --short --branch

3. Iniciar o OpenCode no diretório certo

Depois de cd ../app-auth, execute opencode nesse terminal. O diretório atual é a fronteira importante: use um terminal ou sessão por worktree e confirme a raiz do projeto antes de permitir edições. Uma primeira solicitação somente de leitura pode resumir a branch e listar os arquivos a verificar.

Dê a cada sessão uma tarefa específica e registre a branch. Uma pasta pode cuidar dos testes de autenticação e outra da documentação. Evite que duas sessões alterem o mesmo arquivo ou a mesma saída gerada. Pastas separadas reduzem conflitos, mas não coordenam agentes automaticamente.

4. Evitar conflitos de branch, arquivos e serviços

O worktree separa arquivos controlados pelo Git e o índice, mas não é um contêiner nem uma fronteira de segurança. Um banco local, servidor de teste, cache, projeto Docker ou conta externa ainda pode ser compartilhado. Se necessário, separe schema, porta, nome do projeto ou use um ambiente descartável.

O Git faz checkout dos arquivos rastreados no commit escolhido. .env, certificados, caches e saídas ignoradas podem não aparecer no novo worktree. Recrie apenas o ambiente necessário, carregue segredos pelo método aprovado e verifique git status --short --branch antes e depois do trabalho.

Verificação rápida antes de abrir outro checkout
SituaçãoWorktree faz sentido?O que conferir
Funcionalidade independente em outra branchSimDefina responsável e limite de arquivos.
Pesquisa somente de leitura do diff atualGeralmente nãoOutra sessão pode ler o mesmo checkout.
Tarefas compartilham banco ou servidorCom condiçõesSepare schema, porta ou serviço descartável.
As tarefas editam os mesmos arquivosNãoFaça as edições em sequência ou divida o escopo.

5. Revisar, integrar e limpar sem perder alterações

Revise a branch do worktree como uma mudança independente. Inspecione git diff, execute as verificações do projeto nessa pasta e confirme que só há arquivos previstos. Depois dos testes, faça merge ou rebase pelo processo da equipe. Alterações não aparecem em outro checkout até que os commits sejam compartilhados.

Antes de remover, verifique mudanças sem commit e decida se deve confirmá-las, guardá-las ou mantê-las. git worktree remove ../app-auth remove um checkout limpo; se houver alterações, o Git bloqueia a operação sem uma opção forçada. Não use força como limpeza normal. git worktree prune remove registros antigos, não diretórios ativos.

Um worktree de funcionalidade é testado, integrado à branch principal e removido enquanto o trabalho inacabado permanece separado
Remova o diretório vinculado somente depois de revisar e preservar as alterações necessárias.

6. Escolher worktree ou outra sessão

Use um worktree quando tarefas precisarem de branches, cópias dos arquivos ou limites de revisão diferentes por horas ou dias. Para investigação somente de leitura ou que precisa ver arquivos ainda não commitados, outra sessão no mesmo checkout é mais simples. Se as tarefas forem sequenciais, basta trocar de branch.

O worktree acrescenta etapas de nomear branches, instalar dependências, separar serviços, testar, integrar e limpar. Se dois agentes precisarem editar os mesmos arquivos, a integração pode ficar mais difícil. Divida primeiro as mudanças para que não se sobreponham ou execute as edições em sequência.

7. Limites e verificações comuns

Se git worktree add informar que a branch já está em uso, consulte git worktree list e escolha outra branch ou volte ao worktree existente. Se o OpenCode mostrar arquivos inesperados, confira o caminho do terminal e a raiz do projeto antes de mudar configurações. Arquivos ignorados não fazem parte do checkout.

Se testes de sessões diferentes interferirem, procure fora do Git: bancos, portas, pastas temporárias, geradores e caches compartilhados. Se a remoção falhar, rode git status dentro do worktree e preserve as alterações úteis. Mantenha o checkout principal disponível para integrar o trabalho.

Perguntas frequentes sobre OpenCode worktree

Como uso Git worktrees com OpenCode?

No repositório, execute git worktree add -b nome-da-branch ../nome-da-pasta, entre na pasta nova e inicie opencode. Confira caminho e branch antes de editar arquivos.

O OpenCode tem um comando próprio de worktree?

Este guia usa os comandos worktree do Git. O OpenCode pode ser iniciado no novo diretório de projeto; não é preciso um parâmetro especial.

Duas sessões podem usar a mesma branch em dois worktrees?

O Git normalmente impede a mesma branch em vários worktrees vinculados. Crie outra branch ou volte ao checkout que já a utiliza.

Arquivos de ambiente são copiados para o novo worktree?

O Git recupera arquivos rastreados. Arquivos ignorados ou não rastreados como .env não são garantidos; prepare o ambiente e não versione segredos.

Como remover um worktree sem perder alterações?

Confira o status, preserve ou confirme as mudanças e rode git worktree remove path. Use git worktree prune para limpar registros obsoletos.

Referências oficiais

A documentação do Git e do OpenCode foi conferida em 23 de setembro de 2026. Os comandos do ciclo do worktree pertencem ao Git; confira as opções da versão instalada.

Guias relacionados do OpenCode: OpenCode Agents e AGENTS.md · Configuração JSONC do OpenCode · Permissões do OpenCode · Armazenamento de sessões do OpenCode.