1 - Quante barre vengono salvate?
Gli scomparti non appaiono dal nulla; solo se si creano loro, utilizzando
git stash
o equivalentemente,
git stash save
Quindi, quanti sono salvati? Tanti quanti ne crei.
2 - Per quanto tempo vengono salvate queste barre?
Questa domanda sembra innocente, ma la risposta è in realtà piuttosto sottile. Ci sono due aspetti da considerare qui: 1) il reflog dello stash e 2) il database degli oggetti del repository.
Quando si crea una scorta, Git
- aggiunge una voce al reflog scorta,
- crea due (tre se si utilizza il flag
--include-untracked
) commettere oggetti nel database del repository: quello che corrisponde alla il WIP (work in progress) nel tuo albero di lavoro, e un altro che corrisponde allo stato dell'area di staging (aka index).
Modifica: quegli oggetti di commit sono commit in buona fede, come può essere verificato eseguendo git cat-file -t
su di essi. Semplicemente non sono raggiungibili da nessun ramo; vedi torek's comment.
Per impostazione predefinita, la garbage collection di Git elimina automaticamente le voci di reflog che hanno più di 90 giorni; è possibile specificare un diverso "vita" per le voci scorta reflog, eseguendo
git config gc.refs/stash.reflogexpire <lifetime>
Altro che il meccanismo di garbage-collection sopra descritto, Git non cancellerà nascondigli di propria; una scorta rimarrà nel vostro repository locale (per almeno 90 giorni) fino a quando non si volontariamente
goccia, usando
git drop <stash-reference>
che cancella la voce scorta specificato da il reflog di scorta;
ostacoli, utilizzando
git pop <stash-reference>
cui si applica la scorta specificato e quindi elimina la voce corrispondente dal reflog scorta; o
corsa
git stash clear
che cancella tutte le voci del reflog scorta (attenzione con quella).
Tuttavia, tenere presente che queste tre azioni influiscono solo sul reflog di riserva. In particolare, non causano immediatamente l'eliminazione degli oggetti "WIP" e "index" associati dal database del repository; semplicemente rendono quegli oggetti irraggiungibili. Quest'ultimo rimarrà per un po 'in "repository limbo", fino a quando non sarà possibile ottenere la raccolta dei rifiuti e morire di "morte vera".
Questa è una cosa utile da sapere: se accidentalmente goccia una scorta, si potrebbe ancora essere in grado di recuperarlo dalle viscere della vostra repo, se si può ricordare o identificare lo SHAs dei suoi due oggetti (WIP e indice).
3 - Hanno appena memorizzare temporaneamente il lavoro in modo tale che le modifiche vengono perse quando si riavvia il computer?
N. Le barre non sono diverse da altri oggetti di commit; un riavvio non ha alcun effetto su di loro.
1. Quanti ne create. 2. Finché non si * rilascia *, * pop * o * clear * loro. 3. No; gli stash saranno ancora accessibili dopo un riavvio. Vedi http://git-scm.com/book/it/Git-Tools-Stashing – Jubobs
Downvoter, la domanda potrebbe essere più sottile di quanto pensi ... – Jubobs
In git non sei quasi mai in una posizione in cui non puoi commettere. Non trovo personalmente che lo stash sia così utile. –