Tutorial su Git Worktree: lavora su più branch senza cambiare
Un tutorial pratico su Git worktree che mostra come lavorare su più branch contemporaneamente, velocizzare le review ed evitare stash o cambi di contesto.
Stai lavorando su un feature branch quando un collega ti chiede di rivedere la sua pull request. Potresti fare stash delle modifiche, cambiare branch e sperare di ricordarti dove eri rimasto. Oppure potresti fare commit di lavoro a metà solo per non perderlo. Poi arriva l’hotfix d’emergenza: la produzione è giù e tu sei immerso in un refactoring che tocca metà del codebase. Ogni cambio di contesto come questo costa 10–15 minuti di setup e interrompe la concentrazione.
Git worktree risolve il problema permettendoti di fare checkout di più branch contemporaneamente in directory separate. Invece di fare stash o commit di lavoro incompleto, ti basta cd in un’altra directory dove è già stato fatto il checkout di un altro branch. Lavori sull’hotfix, lo deployi, poi fai cd di nuovo sul tuo feature esattamente com’era.
In questo tutorial, ti mostrerò come creare e gestire worktree, evitare gli errori più comuni e integrarli nel tuo flusso di lavoro quotidiano. Dovresti già conoscere i branch Git, i commit e le operazioni di base da riga di comando. Se prima vuoi ripassare le basi di Git, ti consiglio il tutorial Introduzione a Git di DataCamp per coprire gli elementi essenziali.
Che cos’è Git Worktree?
Git worktree è una funzionalità integrata che crea directory di lavoro aggiuntive collegate allo stesso repository. La tua directory di lavoro principale è la worktree primaria e ogni worktree aggiuntiva che crei ottiene la sua directory con il suo branch in checkout. Tutte queste worktree si collegano allo stesso repository .git.
Questa architettura con repository condiviso significa che i commit che fai in qualsiasi worktree compaiono immediatamente nel database Git condiviso, accessibili da tutte le altre worktree. I file rimangono indipendenti — modificare train.py in una worktree influisce solo su quella directory finché non fai commit delle modifiche.
Perché non usare semplicemente terminal diversi?
Non puoi aprire più terminal nella stessa directory e lavorare su branch diversi contemporaneamente. Git permette un solo branch in checkout per directory. Quando esegui git checkout feature-b in un terminale, cambia i file per ogni terminale che punta a quella directory.
Git worktree lo risolve dando a ogni branch la sua directory. Ogni directory è completamente indipendente, con i propri file, processi in esecuzione e artefatti di build. Passare tra branch diventa cd ../different-directory invece di git checkout different-branch.
Prerequisiti per Git Worktree
Prima di usare git worktree, verifica la tua configurazione:
Git 2.5 o successivo: esegui git --version per controllare. Git worktree è stato rilasciato nel 2015, quindi la maggior parte delle installazioni lo include
Repository Git esistente: ti serve un repository con almeno un branch
Familiarità con la riga di comando: tutte le operazioni su worktree avvengono nel terminale
Git worktree funziona bene quando cambiare branch interromperebbe il lavoro in corso:
Code review: testa le modifiche di un collega senza fare stash del tuo feature work
Hotfix d’emergenza: correggi bug in produzione mantenendo intatto il tuo refactoring
Sviluppo in parallelo: lavora su due feature indipendenti senza cambiare branch continuamente
Processi lunghi: avvia una suite di test da 30 minuti e continua a scrivere codice in un’altra worktree
Evitalo per attività rapide sotto i 10 minuti in cui git checkout è più semplice, o quando sei concentrato su un unico lavoro senza interruzioni previste.
Creare la tua prima Worktree
Il modo migliore per capire git worktree è crearne una e vederla in azione. Vedremo i comandi di base, esploreremo la struttura creata da Git e osserveremo come fluiscono le modifiche tra le worktree.
Configurare un repository di esempio
Prima di immergerti nelle worktree, ti serve un repository Git su cui lavorare. Se hai già un progetto Python con più branch, passa alla sezione successiva. Altrimenti, configuriamo velocemente una semplice pipeline ML:
mkdir ml-pipeline
cd ml-pipeline
git initOfferto da
Crea un README e uno script Python:
echo"# ML Pipeline"> README.md
echo"def load_data():"> train.py
echo" print('Loading training data...')">> train.pyOfferto da
Fai commit di questi file e crea un feature branch:
gitadd.git commit -m"Initial commit"git branch feature-preprocessingOfferto da
Ora hai un repository con due branch: main (il tuo branch corrente) e feature-preprocessing.
Creazione base di una worktree
Creare una worktree per un branch esistente richiede un solo comando. Facciamo il checkout di feature-preprocessing in una directory separata:
git worktree add../ml-pipeline-preprocessing feature-preprocessingOfferto da
Questo crea una nuova directory chiamata ml-pipeline-preprocessing un livello sopra la tua posizione attuale, fa il checkout del branch feature-preprocessing lì e la collega al repository esistente.
Git conferma la creazione:
Preparing worktree (checking out 'feature-preprocessing')
HEAD is now at 0a7f986 Initial commitOfferto da
Per lavoro del tutto nuovo, crea insieme branch e worktree:
git worktree add -b feature-visualization ../ml-pipeline-vizOfferto da
Il flag -b crea un nuovo branch chiamato feature-visualization e lo mette in checkout nella nuova worktree.
Esplorare la struttura delle worktree
Con la worktree creata, ora hai più directory sul filesystem. Per vederle tutte:
/Users/you/projects/ml-pipeline 0a7f986 [main]
/Users/you/projects/ml-pipeline-preprocessing 0a7f986 [feature-preprocessing]Offerto da
La prima riga mostra la tua worktree principale — la directory originale che contiene la cartella .git. La seconda riga mostra la worktree collegata. Entrambe visualizzano l’hash del commit corrente e il branch in checkout.
Ogni directory di worktree funziona come un repository Git completo. Puoi entrarci, modificare file, eseguire git status e fare commit. Le worktree collegate non contengono un’intera directory .git—hanno invece un file .git che punta al repository principale. All’interno della directory .git principale, una cartella worktrees archivia i metadati di ogni worktree collegata.
Lavorare in una worktree
Vai nella worktree feature-preprocessing e fai un commit:
~/projects/
ml-pipeline/ [main] - your usual work
ml-pipeline-metrics/ [feature-custom-metrics]
ml-pipeline-loader/ [feature-streaming-loader]Offerto da
Esegui entrambe le feature in parallelo — ognuna nel suo terminale:
# Terminal 1cd ~/projects/ml-pipeline-metrics
python experiments/evaluate_custom_metrics.py
# Terminal 2 cd ~/projects/ml-pipeline-loader
pytest tests/test_data_loader.py -vOfferto da
Entrambi i processi vengono eseguiti in contemporanea senza conflitti. Quando una feature è completa, fai merge e rimuovi la worktree:
cd ~/projects/ml-pipeline
git merge feature-custom-metrics
git worktree remove ../ml-pipeline-metricsOfferto da
/Users/you/projects/ml-pipeline a3f9c81 [main]
/Users/you/projects/ml-pipeline-review b7d4e92 [pr/data-validation]
/Users/you/projects/ml-pipeline-hotfix a3f9c81 [hotfix/schema-bug]Offerto da
Ogni riga mostra il percorso della directory, l’hash del commit corrente e il branch in checkout. La prima voce è sempre la tua worktree principale (che contiene la cartella .git), le restanti sono worktree collegate.
Per scripting o navigazione rapida, estrai solo i percorsi:
Vediamo alcuni modi per ottenere il massimo dalle worktree e come evitare errori comuni.
Organizzazione delle worktree
Dove metti le worktree è importante. La maggior parte degli sviluppatori le posiziona come directory sorelle del repository principale:
~/projects/
ml-pipeline/ # main worktree
ml-pipeline-feature-auth/ # linked worktree
ml-pipeline-hotfix-login/ # linked worktreeOfferto da
Questa struttura mantiene tutto in un unico posto e rende i percorsi prevedibili. Il pattern projectname-branchname ti dice esattamente cosa contiene ogni directory.
Alcuni preferiscono una cartella dedicata:
~/projects/
ml-pipeline/ # main worktree
ml-pipeline-worktrees/
feature-auth/
hotfix-login/Offerto da
Scegli un approccio e usalo con coerenza. Nomi descrittivi come ml-pipeline-user-authentication rendono le directory autoesplicative, mentre nomi generici come ml-pipeline-temp o ml-pipeline-2 ti costringono a controllare cosa c’è dentro. Considera le worktree come temporanee—creale per un compito specifico, poi rimuovile quando hai finito.
Errori comuni
Stesso branch in più worktree
Git impedisce di mettere in checkout lo stesso branch in due worktree:
git worktree add../ml-pipeline-duplicate mainOfferto da
fatal: 'main' is already used by worktree at '/Users/you/projects/ml-pipeline'Offerto da
Questa protezione esiste perché potresti creare commit in conflitto. Se ti serve lo stesso codice in due posti, crea un nuovo branch.
Worktree dimenticate e spazio su disco
Ogni worktree rimane nel filesystem finché non la rimuovi esplicitamente. Le worktree vecchie si accumulano; i progetti possono raccoglierne 15+ dimenticate, consumando gigabyte.
Ogni worktree contiene una copia completa dei file del repository. Un repository da 500MB con 5 worktree consuma 2,5GB. Rimuovi le worktree quando hai finito:
git worktree list
git worktree remove ../ml-pipeline-old-featureOfferto da
Nidificare worktree
Non creare una worktree all’interno della directory di un’altra worktree. Git lo permette, ma crea strutture di directory confuse e rende la pulizia soggetta a errori.
Ottimizzazione del workflow
Alias della shell fanno risparmiare tempo se crei spesso worktree:
aliasgwl='git worktree list'aliasgwa='git worktree add'aliasgwr='git worktree remove'Offerto da
Per setup più complessi, scrivi una funzione che crea una worktree e configura l’ambiente di sviluppo in un solo passaggio:
La variabile ${PWD##*/} estrae il nome della directory corrente. Eseguire wt feature-logging da ml-pipeline crea ml-pipeline-feature-logging, ci entra e imposta un ambiente virtuale Python con le dipendenze.
Adattalo al tuo linguaggio: sostituisci il setup Python con bundle install per Ruby, cargo build per Rust o npm install per Node.js.
Il tuo editor o IDE funziona con le worktree senza configurazioni speciali. Ogni worktree è solo una directory, quindi aprila come qualsiasi altra cartella di progetto. La maggior parte degli editor moderni supporta l’apertura di più root di progetto contemporaneamente — puoi avere tre worktree aperte in una finestra e passare tra loro dalla sidebar.
Worktree avanzate: sviluppo parallelo assistito dall’AI
Se usi assistenti di coding AI, le worktree sbloccano un potente flusso di lavoro in parallelo. Questo approccio ha preso piede tra sviluppatori e team nel 2024–2025.
Apri un pannello di terminale per ogni worktree e avvia il tuo assistente AI:
# Pane 1cd ~/projects/ml-pipeline-logging
claude
# Pane 2cd ~/projects/ml-pipeline-optim
claude
# Pane 3cd ~/projects/ml-pipeline-bugfix
claudeOfferto da
Ogni istanza AI lavora su una feature diversa senza interferenze. I team riportano di completare lavoro in ore che prima richiedevano giorni. Ad esempio, incident.io esegue 4–5 agenti Claude Code in parallelo usando questo schema. In un caso, Claude ha stimato che un miglioramento UI avrebbe richiesto 2 ore ma ha finito in 10 minuti.
Compromessi da considerare:
Consumo di token: più sessioni AI usano più crediti API e possono raggiungere i rate limit
Overhead di setup: ogni worktree ha bisogno del proprio ambiente virtuale e dipendenze
Carico cognitivo: gestire più conversazioni su compiti differenti
Funziona bene per feature grandi e indipendenti (30+ minuti ciascuna) dove il lavoro non tocca gli stessi file e hai sufficiente quota API. Evitalo per bugfix rapidi, feature strettamente accoppiate o quando sei vicino ai rate limit API.
Conclusione
Ricordi lo scenario iniziale — un collega ha bisogno di una PR review mentre sei a metà di una feature. Ora conosci la soluzione: git worktree add ../ml-pipeline-review pr/branch-name, poi cd per iniziare a rivedere. Il tuo lavoro sulla feature resta intatto. Niente stash, niente commit di codice a metà, niente sforzo mentale per ricostruire il contesto quando torni. Due directory, due branch, zero attrito.
Git worktree non aggiunge complessità al tuo flusso di lavoro — la rimuove. Ogni worktree è solo una directory con un branch in checkout. Ma questa semplicità sblocca qualcosa di potente: la possibilità di cambiare contesto all’istante tra i task senza il carico cognitivo di fare stash, checkout e ricostruire il modello mentale.
Quando ti serve integrare le worktree con i flussi di collaborazione del team come pull request e code review, il percorso di competenze GitHub Foundations di DataCamp copre le pratiche essenziali per lavorare in modo efficace con team distribuiti.
Git Worktree FAQ
Posso usare Git worktree con GitHub Desktop, VS Code o altri strumenti GUI?⌄
Sì. Le worktree appaiono a editor e GUI Git come normali cartelle di progetto. Puoi aprire ogni worktree come progetto separato e la maggior parte degli strumenti—inclusi VS Code, IntelliJ e GitHub Desktop—le gestisce senza configurazioni speciali.
Come interagiscono le Git worktree con i remote come origin?⌄
Tutte le worktree condividono la stessa directory .git, quindi condividono la stessa configurazione dei remote e la cronologia dei fetch. Non devi eseguire git fetch in ogni worktree—un fetch in una aggiorna i remote per tutte. Il tracciamento dei branch si comporta esattamente come in una configurazione a singola worktree.
Cosa succede se elimino manualmente una directory di worktree invece di usare git worktree remove?⌄
Git penserà comunque che la worktree esista e la segnerà come “prunable”. Non romperai il repository, ma i comandi Git potrebbero mostrare avvisi. Esegui git worktree prune per ripulire in sicurezza la voce obsoleta e rimuovere i metadati orfani.
Le Git worktree sono sicure da usare con grandi monorepo o sistemi di build come Bazel, Pants o Nx?⌄
Sì, ma gli artefatti di build possono moltiplicarsi rapidamente. Ogni worktree ha la propria directory di lavoro, quindi cache, ambienti virtuali e output di build sono duplicati. Nei monorepo, è comune configurare gli strumenti di build per archiviare le cache fuori dalla worktree per evitare un uso eccessivo del disco.
Posso usare Git worktree con submodule o sparse checkout?⌄
Sì. I submodule e gli sparse checkout funzionano normalmente nelle worktree, ma devi inizializzarli o aggiornarli separatamente in ciascuna worktree perché il contenuto della working directory non è condiviso. I dati Git sottostanti restano condivisi, ma i file in checkout sono indipendenti.
Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Stai lavorando su un feature branch quando un collega ti chiede di rivedere la sua pull request. Potresti fare stash delle modifiche, cambiare branch e sperare di ricordarti dove eri rimasto. Oppure potresti fare commit di lavoro a metà solo per non perderlo. Poi arriva l’hotfix d’emergenza: la produzione è giù e tu sei immerso in un refactoring che tocca metà del codebase. Ogni cambio di contesto come questo costa 10–15 minuti di setup e interrompe la concentrazione.
Git worktree risolve il problema permettendoti di fare checkout di più branch contemporaneamente in directory separate. Invece di fare stash o commit di lavoro incompleto, ti basta
cdin un’altra directory dove è già stato fatto il checkout di un altro branch. Lavori sull’hotfix, lo deployi, poi faicddi nuovo sul tuo feature esattamente com’era.In questo tutorial, ti mostrerò come creare e gestire worktree, evitare gli errori più comuni e integrarli nel tuo flusso di lavoro quotidiano. Dovresti già conoscere i branch Git, i commit e le operazioni di base da riga di comando. Se prima vuoi ripassare le basi di Git, ti consiglio il tutorial Introduzione a Git di DataCamp per coprire gli elementi essenziali.
Che cos’è Git Worktree?
Git worktree è una funzionalità integrata che crea directory di lavoro aggiuntive collegate allo stesso repository. La tua directory di lavoro principale è la worktree primaria e ogni worktree aggiuntiva che crei ottiene la sua directory con il suo branch in checkout. Tutte queste worktree si collegano allo stesso repository
.git.Questa architettura con repository condiviso significa che i commit che fai in qualsiasi worktree compaiono immediatamente nel database Git condiviso, accessibili da tutte le altre worktree. I file rimangono indipendenti — modificare
train.pyin una worktree influisce solo su quella directory finché non fai commit delle modifiche.Perché non usare semplicemente terminal diversi?
Non puoi aprire più terminal nella stessa directory e lavorare su branch diversi contemporaneamente. Git permette un solo branch in checkout per directory. Quando esegui
git checkout feature-bin un terminale, cambia i file per ogni terminale che punta a quella directory.Git worktree lo risolve dando a ogni branch la sua directory. Ogni directory è completamente indipendente, con i propri file, processi in esecuzione e artefatti di build. Passare tra branch diventa
cd ../different-directoryinvece digit checkout different-branch.Prerequisiti per Git Worktree
Prima di usare git worktree, verifica la tua configurazione:
git --versionper controllare. Git worktree è stato rilasciato nel 2015, quindi la maggior parte delle installazioni lo includeControlla che worktree sia disponibile:
Se viene mostrata la pagina di help, sei pronto.
Quando usare git worktree
Git worktree funziona bene quando cambiare branch interromperebbe il lavoro in corso:
Evitalo per attività rapide sotto i 10 minuti in cui
git checkoutè più semplice, o quando sei concentrato su un unico lavoro senza interruzioni previste.Creare la tua prima Worktree
Il modo migliore per capire git worktree è crearne una e vederla in azione. Vedremo i comandi di base, esploreremo la struttura creata da Git e osserveremo come fluiscono le modifiche tra le worktree.
Configurare un repository di esempio
Prima di immergerti nelle worktree, ti serve un repository Git su cui lavorare. Se hai già un progetto Python con più branch, passa alla sezione successiva. Altrimenti, configuriamo velocemente una semplice pipeline ML:
Crea un README e uno script Python:
Verifica che i file siano stati creati:
Fai commit di questi file e crea un feature branch:
Ora hai un repository con due branch:
main(il tuo branch corrente) efeature-preprocessing.Creazione base di una worktree
Creare una worktree per un branch esistente richiede un solo comando. Facciamo il checkout di
feature-preprocessingin una directory separata:Questo crea una nuova directory chiamata
ml-pipeline-preprocessingun livello sopra la tua posizione attuale, fa il checkout del branchfeature-preprocessinglì e la collega al repository esistente.Git conferma la creazione:
Per lavoro del tutto nuovo, crea insieme branch e worktree:
Il flag
-bcrea un nuovo branch chiamatofeature-visualizatione lo mette in checkout nella nuova worktree.Esplorare la struttura delle worktree
Con la worktree creata, ora hai più directory sul filesystem. Per vederle tutte:
La prima riga mostra la tua worktree principale — la directory originale che contiene la cartella
.git. La seconda riga mostra la worktree collegata. Entrambe visualizzano l’hash del commit corrente e il branch in checkout.Ogni directory di worktree funziona come un repository Git completo. Puoi entrarci, modificare file, eseguire
git statuse fare commit. Le worktree collegate non contengono un’intera directory.git—hanno invece un file.gitche punta al repository principale. All’interno della directory.gitprincipale, una cartellaworktreesarchivia i metadati di ogni worktree collegata.Lavorare in una worktree
Vai nella worktree
feature-preprocessinge fai un commit:Il commit va a buon fine normalmente:
Torna alla worktree principale e controlla la cronologia dei commit:
Il tuo nuovo commit compare:
Nota come il commit appare immediatamente in entrambe le posizioni senza comandi aggiuntivi.
Casi d’uso di Git Worktree
Ora che sai come creare e lavorare con le worktree, vediamo scenari pratici in cui risolvono problemi reali di sviluppo.
Workflow di code review
Un collega ha bisogno di feedback sulla sua PR. Invece di fare stash delle modifiche e cambiare branch, crea una directory separata per la review:
Testa le modifiche e lascia il tuo feedback. Quando hai finito:
Il tuo lavoro originale rimane intatto. Niente stash e nessun cambio di contesto necessario. Per altre strategie su code review efficaci, dai un’occhiata alla guida alle best practice per le code review di DataCamp.
Hotfix d’emergenza
Senza worktree:
Con le worktree:
Correggi e deploya:
In pochi secondi sei di nuovo sul tuo refactoring, con tutti i file esattamente com’erano.
Sviluppo di feature in parallelo
Stai implementando metriche personalizzate e un nuovo data loader — due feature indipendenti. Imposta una worktree per ciascuna:
Il tuo filesystem ora appare così:
Esegui entrambe le feature in parallelo — ognuna nel suo terminale:
Entrambi i processi vengono eseguiti in contemporanea senza conflitti. Quando una feature è completa, fai merge e rimuovi la worktree:
Gestire e ripulire le worktree
Elencare le worktree
Per vedere tutte le worktree in un repository:
Ogni riga mostra il percorso della directory, l’hash del commit corrente e il branch in checkout. La prima voce è sempre la tua worktree principale (che contiene la cartella
.git), le restanti sono worktree collegate.Per scripting o navigazione rapida, estrai solo i percorsi:
Rimuovere le worktree
Quando finisci di lavorare in una worktree, rimuovila correttamente:
Git protegge dalla perdita di dati. Se hai modifiche non committate:
Forza la rimozione se sei sicuro:
Se una worktree è bloccata, usa
--forcedue volte:Se hai eliminato manualmente una directory di worktree (
rm -rfo file manager), Git la traccia ancora internamente. Ripulisci i riferimenti obsoleti:Anteprima di ciò che verrebbe rimosso:
Best practice ed errori comuni
Vediamo alcuni modi per ottenere il massimo dalle worktree e come evitare errori comuni.
Organizzazione delle worktree
Dove metti le worktree è importante. La maggior parte degli sviluppatori le posiziona come directory sorelle del repository principale:
Questa struttura mantiene tutto in un unico posto e rende i percorsi prevedibili. Il pattern
projectname-branchnameti dice esattamente cosa contiene ogni directory.Alcuni preferiscono una cartella dedicata:
Scegli un approccio e usalo con coerenza. Nomi descrittivi come
ml-pipeline-user-authenticationrendono le directory autoesplicative, mentre nomi generici comeml-pipeline-tempoml-pipeline-2ti costringono a controllare cosa c’è dentro. Considera le worktree come temporanee—creale per un compito specifico, poi rimuovile quando hai finito.Errori comuni
Stesso branch in più worktree
Git impedisce di mettere in checkout lo stesso branch in due worktree:
Questa protezione esiste perché potresti creare commit in conflitto. Se ti serve lo stesso codice in due posti, crea un nuovo branch.
Worktree dimenticate e spazio su disco
Ogni worktree rimane nel filesystem finché non la rimuovi esplicitamente. Le worktree vecchie si accumulano; i progetti possono raccoglierne 15+ dimenticate, consumando gigabyte.
Ogni worktree contiene una copia completa dei file del repository. Un repository da 500MB con 5 worktree consuma 2,5GB. Rimuovi le worktree quando hai finito:
Nidificare worktree
Non creare una worktree all’interno della directory di un’altra worktree. Git lo permette, ma crea strutture di directory confuse e rende la pulizia soggetta a errori.
Ottimizzazione del workflow
Alias della shell fanno risparmiare tempo se crei spesso worktree:
Per setup più complessi, scrivi una funzione che crea una worktree e configura l’ambiente di sviluppo in un solo passaggio:
La variabile
${PWD##*/}estrae il nome della directory corrente. Eseguirewt feature-loggingdaml-pipelinecreaml-pipeline-feature-logging, ci entra e imposta un ambiente virtuale Python con le dipendenze.Creare una worktree diventa un solo comando:
Adattalo al tuo linguaggio: sostituisci il setup Python con
bundle installper Ruby,cargo buildper Rust onpm installper Node.js.Il tuo editor o IDE funziona con le worktree senza configurazioni speciali. Ogni worktree è solo una directory, quindi aprila come qualsiasi altra cartella di progetto. La maggior parte degli editor moderni supporta l’apertura di più root di progetto contemporaneamente — puoi avere tre worktree aperte in una finestra e passare tra loro dalla sidebar.
Worktree avanzate: sviluppo parallelo assistito dall’AI
Se usi assistenti di coding AI, le worktree sbloccano un potente flusso di lavoro in parallelo. Questo approccio ha preso piede tra sviluppatori e team nel 2024–2025.
Crea worktree separate per compiti differenti:
Apri un pannello di terminale per ogni worktree e avvia il tuo assistente AI:
Ogni istanza AI lavora su una feature diversa senza interferenze. I team riportano di completare lavoro in ore che prima richiedevano giorni. Ad esempio, incident.io esegue 4–5 agenti Claude Code in parallelo usando questo schema. In un caso, Claude ha stimato che un miglioramento UI avrebbe richiesto 2 ore ma ha finito in 10 minuti.
Compromessi da considerare:
Funziona bene per feature grandi e indipendenti (30+ minuti ciascuna) dove il lavoro non tocca gli stessi file e hai sufficiente quota API. Evitalo per bugfix rapidi, feature strettamente accoppiate o quando sei vicino ai rate limit API.
Conclusione
Ricordi lo scenario iniziale — un collega ha bisogno di una PR review mentre sei a metà di una feature. Ora conosci la soluzione:
git worktree add ../ml-pipeline-review pr/branch-name, poicdper iniziare a rivedere. Il tuo lavoro sulla feature resta intatto. Niente stash, niente commit di codice a metà, niente sforzo mentale per ricostruire il contesto quando torni. Due directory, due branch, zero attrito.Git worktree non aggiunge complessità al tuo flusso di lavoro — la rimuove. Ogni worktree è solo una directory con un branch in checkout. Ma questa semplicità sblocca qualcosa di potente: la possibilità di cambiare contesto all’istante tra i task senza il carico cognitivo di fare stash, checkout e ricostruire il modello mentale.
Quando ti serve integrare le worktree con i flussi di collaborazione del team come pull request e code review, il percorso di competenze GitHub Foundations di DataCamp copre le pratiche essenziali per lavorare in modo efficace con team distribuiti.