🚀 Nuova versione beta disponibile! Feedback o problemi? Contattaci

Git Stash: Salvare e Ripristinare Modifiche Temporanee

Codegrind Team•Aug 28 2024

Il comando git stash è uno strumento potente in Git che ti permette di salvare temporaneamente modifiche non committate nel tuo working directory, senza dover creare un commit. Questo è particolarmente utile quando hai bisogno di cambiare branch o applicare una correzione rapida, ma non sei ancora pronto a committare le modifiche in corso. In questa guida, esploreremo come usare git stash per gestire le modifiche temporanee e mantenere un flusso di lavoro Git efficiente.

Cos’è Git Stash?

Git Stash consente di mettere da parte (stash) le modifiche non committate in un’area di archiviazione temporanea, chiamata “stash”, per poter tornare a lavorare su di esse in seguito. Le modifiche possono includere file modificati e aggiunti all’area di staging o nel working directory, ma non ancora committate.

Quando Usare Git Stash

  • Cambio di Branch: Se devi passare a un altro branch per lavorare su una nuova funzionalitĂ  o correggere un bug, ma non vuoi ancora committare le modifiche correnti.
  • Preparazione per un Merge o Rebase: Prima di un’operazione di merge o rebase, puoi stasheare le modifiche per evitare conflitti.
  • Sperimentazione: Se stai provando nuove idee e non sei ancora sicuro di volerle committare, git stash ti permette di salvarle temporaneamente.

Come Usare Git Stash

Salvare Modifiche con Git Stash

Per salvare le modifiche non committate nel tuo working directory, usa:

git stash

Questo comando salva tutte le modifiche nell’area di staging e nel working directory nel “stash”, ripristinando il working directory allo stato dell’ultimo commit.

Visualizzare gli Stash Salvati

Puoi visualizzare tutti gli stash salvati con:

git stash list

Questo comando mostra un elenco di tutti gli stash attualmente salvati, con identificatori come stash@{0}, stash@{1}, ecc.

Ripristinare Modifiche Stashate

Per ripristinare le modifiche dall’ultimo stash, usa:

git stash apply

Questo comando ripristina le modifiche dall’ultimo stash nel working directory, ma non rimuove lo stash dalla lista.

Ripristinare e Rimuovere uno Stash

Se vuoi ripristinare le modifiche e rimuoverle dallo stash, usa:

git stash pop

Questo comando applica le modifiche dell’ultimo stash e lo rimuove dalla lista.

Applicare uno Stash Specifico

Se vuoi ripristinare un particolare stash dalla lista, specifica il suo identificatore:

git stash apply stash@{2}

Salvare Solo Modifiche Non Staged

Se vuoi salvare solo le modifiche non aggiunte all’area di staging, lascia intatte le modifiche staged con:

git stash -k

Salvare le Modifiche con un Messaggio

Puoi anche salvare le modifiche con un messaggio descrittivo per ricordare cosa contiene lo stash:

git stash save "Messaggio descrittivo"

Rimuovere uno Stash

Per rimuovere uno specifico stash dalla lista, usa:

git stash drop stash@{0}

Per rimuovere tutti gli stash, usa:

git stash clear

Esempi Pratici di Git Stash

Cambiare Branch con Modifiche Non Committate

Supponiamo di essere nel branch feature e di avere modifiche non committate che non sono ancora pronte per essere salvate, ma hai bisogno di passare al branch main per una correzione rapida:

  1. Salva le modifiche con git stash:

    git stash
    
  2. Passa al branch main:

    git checkout main
    
  3. Dopo aver completato il lavoro nel branch main, torna al branch feature:

    git checkout feature
    
  4. Ripristina le modifiche stashate:

    git stash pop
    

Gestire Modifiche Multiple

Se hai stasheato diverse serie di modifiche, puoi gestirle specificamente:

  1. Visualizza gli stash:

    git stash list
    
  2. Ripristina uno stash specifico:

    git stash apply stash@{1}
    
  3. Rimuovi uno stash dopo averlo applicato:

    git stash drop stash@{1}
    

Best Practices per Usare Git Stash

  • Usa Descrizioni Chiare: Quando salvi uno stash, usa un messaggio descrittivo per ricordarti cosa contiene.
  • Evita di Lasciare Stash Obsoleti: Pulire regolarmente gli stash non piĂą necessari per evitare confusione.
  • Ripristina con Cautela: Quando ripristini uno stash, assicurati di non sovrascrivere modifiche importanti nel tuo working directory.
  • Usa Stash Prima del Rebase: Se stai per eseguire un rebase, stasheare le modifiche ti aiuterĂ  a evitare conflitti.

Risolvere Problemi Comuni

Stash Non Applicato Correttamente

Se un stash non si applica correttamente a causa di conflitti, Git ti informerà dei file in conflitto. Risolvi manualmente i conflitti, poi aggiungi i file risolti con git add e completa l’operazione di stash.

Perdita di Modifiche Stashate

Se accidentalmente cancelli uno stash, non esiste un comando diretto per ripristinarlo. Tuttavia, puoi verificare il reflog (git reflog) per vedere se è possibile recuperare i commit correlati prima che lo stash sia stato rimosso.

Conclusione

Il comando git stash è uno strumento prezioso per salvare e ripristinare modifiche temporanee nel tuo progetto Git. Sfruttando appieno git stash, puoi mantenere un flusso di lavoro flessibile ed evitare di committare codice non pronto. Seguendo le best practices e utilizzando i comandi appropriati, puoi gestire in modo efficace le tue modifiche non committate senza interrompere il tuo processo di sviluppo.