Sinossi
git worktree add <path> [<branch>]
git worktree list
git worktree remove <path>
git worktree prune
Descrizione
Il comando git worktree permette a un singolo repository di avere più working tree checkoutate simultaneamente, ognuna su un branch diverso. Questo è più veloce ed economico che clonare più volte: un solo database degli oggetti, ma checkout paralleli. I worktree sono perfetti per eseguire test su un branch di rilascio mentre si continua lo sviluppo su main, o per prendere un fix d'emergenza senza disturbare il lavoro in corso.
Ogni worktree ha il proprio HEAD, index e file di lavoro, ma condivide gli oggetti e la config sottostanti. I worktree bloccati prevengono il pruning automatico di checkout montati altrove.
Nell'uso quotidiano, git worktree si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Opzioni comuni
| Sottocomando | Descrizione |
|---|---|
add <path> [<branch>] | Crea un nuovo worktree. |
add -b <new> <path> [<start>] | Crea nuovo branch + worktree in un passo. |
list | Mostra tutti i worktree. |
remove <path> | Cancella la directory e i metadati di un worktree. |
prune | Rimuove metadati per worktree il cui path è sparito. |
lock / unlock | Previene o permette il pruning. |
move <old> <new> | Rilocaliza un worktree. |
Esempi
git worktree add ../project-hotfix release/1.4
# Fa checkout di release/1.4 in una directory adiacente
git worktree add -b experiment ../project-experiment
# Crea un nuovo branch e worktree
git worktree list
# Visualizza tutti i worktree
git worktree remove ../project-hotfix
# Smonta quando finito
Errori comuni
Non puoi avere lo stesso branch checkoutato in due worktree simultaneamente — Git rifiuta. Usa --detach se hai bisogno solo dei contenuti. Dimenticare di fare worktree remove lascia metadati stantii; git worktree prune pulisce.
Comandi correlati
git switch, git branch, git clone, git submodule