Con git stash potete salvare tem­po­ra­nea­men­te le vostre modifiche senza dover ne­ces­sa­ria­men­te eseguire un commit. In un progetto è possibile eseguire anche più stash.

Registra il tuo dominio
  • Domain Connect gratuito per una con­fi­gu­ra­zio­ne facile del DNS
  • Cer­ti­fi­ca­to SSL Wildcard gratuito
  • Pro­te­zio­ne privacy inclusa

Cos’è git stash?

Nor­mal­men­te il lavoro in Git funziona in questo modo: apportate modifiche nel re­po­si­to­ry locale, svolgete i test del caso e se il risultato vi soddisfa, eseguite un commit verso il branch prin­ci­pa­le. Purtroppo, però, il lavoro non procede sempre in modo lineare. In alcuni casi potreste dovervi trovare a risolvere un bug situato su un altro branch, dovendo lasciare in sospeso il lavoro che state svolgendo sul branch attuale. In questo caso un commit non sarebbe la soluzione giusta, perché in­vie­re­ste al re­po­si­to­ry centrale delle modifiche prov­vi­so­rie, creando con­fu­sio­ne nella cro­no­lo­gia. Il comando più adatto in questo caso è git stash: salva il lavoro iniziato, met­ten­do­lo tem­po­ra­nea­men­te da parte.

Questo riguarda tutte le modifiche per le quali non avete ancora eseguito un commit. Quando volete ri­pren­de­re a lavorare sui file, li potete ri­chia­ma­re da git stash e pro­se­gui­re in tutta tran­quil­li­tà da dove eravate rimasti. In questo modo avete la sicurezza di con­ser­va­re il lavoro già svolto senza perdere gli ag­gior­na­men­ti e avete allo stesso tempo la libertà di lavorare in modo fles­si­bi­le su altri branch. Se non usate git stash, al momento di eseguire git checkout potreste ricevere una notifica di errore o ad­di­rit­tu­ra perdere le modifiche fatte.

Sintassi e fun­zio­na­men­to di git stash

Git stash serve anche a salvare modifiche in­ter­me­die sul branch attuale. Il comando di base si scrive come segue:

git stash

Di seguito vi mostriamo come funziona passo per passo con un semplice esempio. Im­ma­gi­na­te di lavorare su due branch. In questo momento state ef­fet­tuan­do delle modifiche sul branch prin­ci­pa­le, ma il vostro team vi avvisa che è ne­ces­sa­rio apportare dei cam­bia­men­ti anche nel secondo branch. Con git stash procedete come segue:

  1. Salvate le modifiche sul primo branch.
  2. Usate il comando git stash.
  3. Passate al secondo branch ed eseguite le modifiche ne­ces­sa­rie.
  4. Eseguite un commit delle modifiche sul secondo branch.
  5. Tornate al primo branch.
  6. Ora usate il comando git stash pop per ri­chia­ma­re nuo­va­men­te gli ag­gior­na­men­ti salvati in stash.

Altre opzioni che prevedono l’uso di git stash

Oltre alla variante il­lu­stra­ta qui sopra, git stash dispone di alcune altre opzioni. Queste le più im­por­tan­ti:

git stash -u Tiene in con­si­de­ra­zio­ne anche i file che non sono stati tracciati.
git stash -a Tiene in con­si­de­ra­zio­ne tutti i file ignorati o che non sono stati tracciati.
git stash -p Vi consente di se­le­zio­na­re ed eseguire lo stash solo di de­ter­mi­na­ti file.

Vi­sua­liz­za­re la lista degli stash

Potete usare il comando git stash in modo il­li­mi­ta­to, salvando quindi le modifiche in vari punti intermedi. A questo proposito avete la pos­si­bi­li­tà di vi­sua­liz­za­re una lista dei git stash eseguiti man­te­nen­do in tal modo la visione d’insieme dei sal­va­tag­gi fatti. Il relativo comando è:

git stash list

I sal­va­tag­gi vengono vi­sua­liz­za­ti in ordine cro­no­lo­gi­co inverso. L’ultimo git stash eseguito compare quindi al primo posto.

Nor­mal­men­te i singoli stash vengono indicati sem­pli­ce­men­te con “WIP” (work in progress). Tuttavia, poiché la presenza di più git stash può creare con­fu­sio­ne, si consiglia di dotare i singoli stash di una de­scri­zio­ne chiara. Il relativo comando è:

git stash save "inserire qui la descrizione"

Git stash pop e apply

Il comando git stash pop serve a se­le­zio­na­re e a vi­sua­liz­za­re l’ultimo git stash eseguito. Se invece de­si­de­ra­te accedere a un altro stash eseguito in pre­ce­den­za, potete spe­ci­fi­car­lo con un argomento. Se ad esempio dovete vi­sua­liz­za­re il secondo stash eseguito, inserite il valore 1 (si parte dallo zero). Questo il comando:

git stash pop stash@{1}

Un’al­ter­na­ti­va a pop è apply. La dif­fe­ren­za: pop cancella il relativo git stash dalla memoria e lo reintegra nel branch attuale. Con apply, invece, si mantiene lo stash nella memoria.

Rior­di­na­re git stash

Proprio perché si ha la pos­si­bi­li­tà di rea­liz­za­re un numero il­li­mi­ta­to di git stash, è im­por­tan­te rior­di­na­re di tanto in tanto la lista, in modo che questa non sia troppo confusa. Anche in questo caso potete usare due comandi:

git stash clear

Con questo comando svuotate tutta la lista dei git stash.

Se volete eliminare solo un de­ter­mi­na­to stash dalla lista, dovete usare il seguente comando:

git stash drop <stash_id></stash_id>

Ri­chia­ma­re i git stash

Potete vi­sua­liz­za­re un riepilogo di tutti i git stash eseguiti tramite il seguente comando:

git stash show

Per ottenere una visione d’insieme delle modifiche fatte (il co­sid­det­to diff) usate questo comando:

git stash show -p

Uno strumento utile per lavorare con Git

Git stash facilita il lavoro e ga­ran­ti­sce che le modifiche non terminate restino in memoria. Questo è solo uno dei comandi utili di­spo­ni­bi­li nel nostro articolo sui comandi Git. E se usate re­go­lar­men­te il sistema di controllo di versione, vi con­si­glia­mo di leggere la nostra guida “Git Cheat Sheet sca­ri­ca­bi­le in PDF.

Consiglio

Deploy Now di IONOS è la soluzione migliore per il vostro sito web e app. Ap­pro­fit­ta­te di una con­fi­gu­ra­zio­ne rapida, di flussi di lavoro ot­ti­miz­za­ti e della massima sca­la­bi­li­tà. A vostra di­spo­si­zio­ne troverete diverse tariffe van­tag­gio­se.

Vai al menu prin­ci­pa­le