Sinossi
git stash [push [-m <msg>] [-u]]
git stash pop [<stash>]
git stash list
git stash drop [<stash>]
Descrizione
Il comando git stash mette da parte modifiche non committate (sia in working tree che in index) e riporta la working tree a uno stato pulito. Le modifiche messe da parte sono memorizzate su uno stack che puoi riapplicare dopo. Stash è perfetto per situazioni come "devo cambiare branch ma il mio lavoro non è pronto da committare".
Per default, i file untracked non vengono stashati; passa -u (o --include-untracked) per includerli, e -a per includere anche file ignorati. Ogni entry stash è un normale oggetto commit, indirizzabile come stash@{0}, stash@{1}, ecc.
Nell'uso quotidiano, git stash si integra con alias e CI.
Capire il modello dati di Git aiuta a prevedere i risultati.
Opzioni comuni
| Opzione / Sottocomando | Descrizione |
|---|---|
push -m <msg> | Stash con un messaggio descrittivo. |
-u | Include file untracked. |
-a | Include anche file ignorati. |
list | Mostra tutte le entry stash. |
show [-p] <stash> | Visualizza contenuti di uno stash. |
pop / apply | Riapplica uno stash; pop lo cancella anche. |
drop <stash> | Cancella un'entry stash. |
branch <name> | Crea un branch da uno stash. |
Esempi
git stash push -m "WIP: refactor parser"
# Salva il lavoro corrente con un'etichetta
git stash list
# stash@{0}: On main: WIP: refactor parser
git stash pop
# Riapplica lo stash più recente e lo rimuove
git stash branch temp-branch stash@{1}
# Crea un nuovo branch da uno stash che confligge
Errori comuni
Dimenticare che stash non include file untracked per default, poi perderli eseguendo git clean. Usa -u. Fare pop di uno stash che confligge può lasciare uno stato complicato — considera apply prima così che lo stash non venga cancellato se le cose vanno male. Stash di lunga durata si accumulano; rivedi con git stash list regolarmente.
Comandi correlati
git commit, git switch, git restore, git clean