Da Anonimo (non verificato) , 29 Aprile 2026

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 / SottocomandoDescrizione
push -m <msg>Stash con un messaggio descrittivo.
-uInclude file untracked.
-aInclude anche file ignorati.
listMostra tutte le entry stash.
show [-p] <stash>Visualizza contenuti di uno stash.
pop / applyRiapplica 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