Da Anonimo (non verificato) , 29 Aprile 2026

Sinossi

git stash push -p -m <msg> -- <pathspec>
git stash branch <newbranch> [<stash>]
git stash create
git stash store -m <msg> <sha>

Descrizione

Oltre a git stash push e git stash pop, il macchinario stash offre potenti capacità per workflow avanzati. Puoi stashare path specifici, stashare hunk specifici con -p, ricreare un branch da uno stash che confligge con lo stato corrente, o anche creare un oggetto stash senza memorizzarlo nello stack (poi memorizzarlo dopo con un messaggio personalizzato).

Internamente, ogni stash è un merge commit tra WIP-on-branch (la working tree) e index-on-branch (le modifiche in stage), con il parent che è la punta del branch. Questa struttura è ciò che permette a stash branch e stash apply di ricostruire lo stato esatto.

Nell'uso quotidiano, git stash (advanced) si integra con alias e CI.

Capire il modello dati di Git aiuta a prevedere i risultati.

Opzioni comuni

Sottocomando / OpzioneDescrizione
push -pStash di hunk scelti interattivamente.
push -- <pathspec>Stash solo dei path specificati.
--keep-indexStash ma mantiene ciò che è già in stage.
--no-keep-indexResetta l'index allo stash (default).
branch <name>Ricrea lo stato su un branch fresco.
createCrea un commit stash ma non lo memorizza.
store -mMette un commit esistente sullo stack.

Esempi

git stash push -p -m "WIP: solo modifiche di refactor" -- src/refactor/
# Stash solo path specifici, interattivamente

git stash --keep-index -m "Test pre-staged"
# Verifica che le modifiche in stage passino i test, con WIP da parte

git stash branch fix-from-stash stash@{2}
# Risuscita uno stash che non si applica più pulitamente

SHA=$(git stash create "checkpoint")
git stash store -m "checkpoint manuale" "$SHA"
# Creazione programmatica di stash

Errori comuni

Fare stash durante un merge o rebase mescola gli stati e confonde lo stack. Evita. Stash di lunga durata sopravvivono al loro contesto — rivedi periodicamente. --keep-index è ottimo per verificare modifiche in stage, ma lo stash risultante include sia contenuto in stage che fuori, il che può sorprendere.

Comandi correlati

git stash, git commit --fixup, git worktree, git restore