Guida al flusso Git

OpenCode Worktree: isolare attività di programmazione con Git

Un OpenCode worktree è un albero di lavoro collegato di Git: ogni attività ha cartella e branch propri, ma condivide la cronologia del repository. Crealo con Git, entra nella cartella e avvia OpenCode lì. È utile quando attività parallele richiedono file e confini di revisione separati.

Tre aree di lavoro OpenCode separate collegate a un repository Git condiviso
Illustrazione concettuale: ogni worktree ha un checkout distinto e condivide la cronologia Git.

Risposta rapida

Usa Git worktree per separare le attività parallele di OpenCode

Git gestisce i worktree collegati; OpenCode viene eseguito dalla cartella di progetto aperta. Ogni worktree ha file, indice e branch distinti, ma condivide cronologia e oggetti Git. Usalo quando due attività indipendenti modificherebbero lo stesso checkout. Non isola database, servizi, segreti o file generati fuori da Git.

Un OpenCode worktree è un albero di lavoro collegato di Git: ogni attività ha cartella e branch propri, ma condivide la cronologia del repository. Crealo con Git, entra nella cartella e avvia OpenCode lì. È utile quando attività parallele richiedono file e confini di revisione separati.

Guide OpenCode correlate: OpenCode Agents e AGENTS.md · Configurazione JSONC di OpenCode · Permessi OpenCode · Archiviazione sessioni OpenCode.

1. Cosa cambia un Git worktree per OpenCode

Un Git worktree è un’altra directory di lavoro collegata allo stesso repository. Il checkout principale può restare su main, mentre una cartella vicina usa work/auth. File e branch attivo sono distinti; Git condivide comunque oggetti e cronologia, quindi di solito non serve clonare tutto il repository per ogni attività.

Questo flusso non richiede una modalità worktree speciale di OpenCode. Avvia la CLI dalla nuova directory, che diventa il contesto del progetto. Le impostazioni globali possono restare attive, ma file non tracciati e configurazione locale dell’ambiente non vengono copiati automaticamente.

2. Creare un worktree collegato in tre passaggi sicuri

Per prima cosa controlla il checkout attuale. Un punto di partenza pulito aiuta a distinguere le modifiche della nuova attività. Dalla radice del repository crea un branch e il relativo worktree in una cartella vicina, fuori dalla directory originale.

L’esempio crea work/auth dal commit corrente e lo posiziona in ../app-auth. Se il branch esiste già, verifica che non sia attivo in un altro worktree prima di riutilizzarlo. Git normalmente impedisce di usare lo stesso branch in più worktree collegati contemporaneamente.

Esegui questi comandi dalla radice del repository principale. Il nuovo branch parte dal commit corrente.

Esempio: creare e aprire un worktree di funzionalità
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. Avviare OpenCode dalla directory giusta

Dopo cd ../app-auth, esegui opencode in quella shell. La directory corrente è il confine importante: usa un terminale o una sessione per worktree e controlla la radice del progetto prima di consentire modifiche. Una prima richiesta di sola lettura può riassumere il branch e i file da esaminare.

Assegna a ogni sessione un’attività precisa e annota il branch. Una cartella può aggiornare i test di autenticazione e un’altra la documentazione. Evita che due sessioni modifichino lo stesso file o scrivano nella stessa cartella generata. Cartelle separate riducono collisioni, ma non coordinano automaticamente gli agenti.

4. Evitare conflitti tra branch, file e servizi

Il worktree separa file Git e indice, ma non è un container né un confine di sicurezza. Un database locale, un server di test, una cache, un progetto Docker o un account esterno può restare condiviso. Se serve, separa schema, porta, nome del progetto oppure usa un ambiente temporaneo.

Git ripristina i file tracciati dal commit scelto. .env, certificati, cache e output ignorati potrebbero non comparire nel nuovo worktree. Ricrea solo l’ambiente necessario, carica i segreti con il metodo approvato e controlla git status --short --branch prima e dopo il lavoro.

Controllo rapido prima di aprire un altro checkout
SituazioneWorktree adatto?Cosa verificare
Funzionalità indipendente su un altro branchDefinisci responsabile e confini dei file.
Indagine in sola lettura sul diff attualeDi solito noUna seconda sessione può leggere lo stesso checkout.
Attività che condividono database o serverCon condizioniSepara schema, porta o servizio temporaneo.
Attività che modificano gli stessi fileNoEsegui le modifiche in sequenza o dividi i ruoli.

5. Revisionare, unire e pulire senza perdere modifiche

Revisiona il branch del worktree come modifica indipendente. Controlla git diff, esegui le verifiche del progetto da quella directory e conferma che ci siano solo file previsti. Dopo i test, fai merge o rebase secondo il processo del team. Le modifiche non appaiono in altri checkout finché i commit non vengono condivisi.

Prima di rimuovere il worktree controlla le modifiche non confermate e decidi se salvarle, confermarle o conservarle. git worktree remove ../app-auth elimina un checkout pulito; Git rifiuta l’operazione se ci sono modifiche, salvo forzatura. Non usare la forza come pulizia normale. git worktree prune rimuove registrazioni obsolete, non cartelle attive.

Un worktree di funzionalità viene verificato, unito al branch principale e rimosso mentre il lavoro incompleto resta separato
Rimuovi la directory collegata solo dopo aver revisionato e conservato le modifiche necessarie.

6. Scegliere un worktree o un’altra sessione

Scegli un worktree quando servono branch, snapshot dei file o confini di revisione distinti che possono restare aperti per giorni. Per una ricerca in sola lettura o che deve vedere file non confermati, è più semplice aprire un’altra sessione nello stesso checkout. Per attività sequenziali basta cambiare branch.

Un worktree aggiunge gestione di nomi branch, dipendenze, servizi, test, merge e pulizia. Se più agenti modificano gli stessi file, l’integrazione può diventare più difficile. Dividi prima il lavoro in modifiche non sovrapposte oppure esegui le modifiche in sequenza.

7. Limiti e controlli di risoluzione problemi

Se git worktree add segnala che un branch è già attivo, consulta git worktree list e crea un altro branch o torna al worktree esistente. Se OpenCode mostra file inattesi, controlla il percorso del terminale e la radice del progetto prima di cambiare configurazione. I file ignorati non fanno parte del checkout.

Se i test di sessioni diverse interferiscono, cerca fuori da Git: database, porte, cartelle temporanee, generatori e cache condivise. Se la rimozione è bloccata, esegui git status nel worktree e conserva le modifiche utili. Tieni il checkout principale disponibile per integrare il lavoro.

FAQ OpenCode worktree

Come uso Git worktrees con OpenCode?

Nel repository esegui git worktree add -b nome-branch ../nome-cartella, entra nella nuova cartella e avvia opencode. Controlla percorso e branch prima di modificare file.

OpenCode ha un comando worktree integrato?

Questa guida usa i comandi worktree di Git. OpenCode può essere avviato dalla nuova directory del progetto; non serve un flag speciale.

Due sessioni possono usare lo stesso branch in due worktree?

Git normalmente impedisce di fare checkout dello stesso branch in più worktree collegati. Crea un branch diverso o torna al checkout esistente.

I file dell’ambiente vengono copiati?

Git recupera i file tracciati. File ignorati o non tracciati come .env non sono garantiti; prepara l’ambiente e non versionare segreti.

Come rimuovo un worktree senza perdere modifiche?

Controlla lo stato, conserva o conferma le modifiche, quindi esegui git worktree remove path. git worktree prune pulisce le registrazioni obsolete.

Riferimenti ufficiali

Documentazione Git e OpenCode verificata il 23 settembre 2026. I comandi del ciclo worktree appartengono a Git; controlla le opzioni della versione installata.

Guide OpenCode correlate: OpenCode Agents e AGENTS.md · Configurazione JSONC di OpenCode · Permessi OpenCode · Archiviazione sessioni OpenCode.