Git School · FluxGit

Punti di ripristino e stash in Git

FluxGit ·

I blocchi sono casi diversi, non un unico script. Scegli il caso del tuo repository. Sostituisci branch, percorsi e VERIFIED_COMMIT prima dell’uso. I comandi di annullamento valgono solo per la propria operazione attiva; non eseguire entrambe le alternative.

Risposta breve

I punti di ripristino FluxGit registrano stati per recuperare operazioni di cronologia coperte. Uno stash manuale accantona modifiche locali: è un percorso distinto.

Esempio e condizioni

Il tutorial G12 cambia branch con modifiche tracked pendenti. I file untracked rimangono nella directory, salvo inclusione esplicita.

Controlla prima di modificare

Esamina git status --short e git diff. Decidi cosa conservare prima del cambio di branch; una directory pulita non è un backup permanente.

git status --short
git diff

Conserva un riferimento o checkout separato

Crea uno stash manuale con un messaggio riconoscibile. git stash push salva modifiche tracked; usa -u solo per includere anche file untracked.

git stash push -m "school/manual-before-switch"
git stash list

Primo percorso

Controlla git stash list e passa al branch desiderato. Quando torni, rivedi il contesto prima di applicare la voce scelta.

git switch target-branch

Scegli consapevolmente l’altro risultato

git stash apply conserva la voce. git stash pop la elimina solo dopo un’applicazione riuscita; in caso di conflitto la voce resta disponibile.

git stash show --patch 'stash@{0}'
git stash apply 'stash@{0}'

Limiti ed eccezioni

I punti automatici coprono reset, rebase, cherry-pick, revert e merge nei percorsi protetti. Discard e clean non creano un Flux restore point universale.

Conflitti e pulizia

In caso di conflitto esamina i file e risolvilo consapevolmente. Non ripetere pop né eliminare la voce per nascondere lavoro pendente.

Verifica il risultato

Verifica file, indice e test dopo l’applicazione dello stash. Elimina una voce solo dopo aver controllato che il lavoro desiderato sia conservato.

git status --short
git diff
git diff --cached

Domande frequenti

Uno stash non viene pubblicato automaticamente con push e non sostituisce un backup. Il recupero richiede che lo stato locale pertinente resti disponibile.

Esamina l’operazione in FluxGit

Safety Timeline unisce movimenti del reflog, rischi e punti di ripristino. I dati dei punti restano locali; usa anteprima e contesto di recupero specifici dell’operazione.

Riferimenti ufficiali Git

Git School · 1:51

Cambiare branch con lavoro incompleto: git stash, in modo visivo

Conserva una modifica tracciata con git stash, assegnale un nome, cambia branch e torna per usare pop. Scopri perché i file non tracciati rimangono e la differenza tra apply e un pop riuscito. Include i comandi del terminale.

Cambiare branch con lavoro incompleto: git stash, in modo visivo
Voce narrante in inglese. Su YouTube sono disponibili sottotitoli manuali in 11 lingue. Questa trascrizione è in italiano.

Guarda su YouTube — si apre una nuova scheda

Registrato in un repository di prova. Narrazione in inglese e sottotitoli in italiano.

Leggi la trascrizione della narrazione
  1. 00:03 Sei nel mezzo di una modifica e devi guardare subito un altro branch. Non è pronta per il commit, e non vuoi perderla.
  2. 00:12 Ecco la modifica incompleta, in app.py.
  3. 00:19 Uno stash conserva le modifiche tracciate. Qui salva la modifica di app.py e la rimuove dalla cartella di lavoro. I file non tracciati restano sul disco. Un pop riuscito ripristina la modifica e rimuove la relativa voce di stash.
  4. 00:36 Scegli Stash current changes e assegna un nome che riconoscerai più tardi.
  5. 00:48 Passa all'altro branch. La modifica tracciata è nello stash. Il file non tracciato rimane nella cartella.
  6. 00:58 Hai finito lì. Torna su main.
  7. 01:05 Esegui pop sullo stash. La modifica è tornata in app.py, e lo stash è scomparso.
  8. 01:15 Apply o pop? Apply ripristina le modifiche e mantiene la voce di stash. Pop rimuove la voce solo se le modifiche vengono applicate correttamente. In caso di conflitti, lo stash viene conservato.
  9. 01:29 Nel terminale: git stash push con un messaggio, cambia branch e torna, poi git stash pop.
  10. 01:37 Riepilogo. Il lavoro incompleto va su uno scaffale, non in un commit a metà. Prossima lezione: riordinare i commit prima della pull request.

Percorsi correlati

Scarica FluxGit