La gestione temporanea è un passaggio prima del processo di commit in git. Cioè, un commit in git viene eseguito in due passaggi: staging e commit effettivo.
Finché un changeset si trova nell'area di gestione temporanea, git ti consente di modificarlo come preferisci (sostituisci i file di gestione temporanea con altre versioni di file di gestione temporanea, rimuovi le modifiche dalla stadiazione, ecc.).
Tempo di metafora rotto:
Prendi in considerazione uno scenario in cui chiami i motori per trasferire le tue cose dal tuo vecchio appartamento al tuo nuovo appartamento. Prima di farlo, esaminerai le tue cose, deciderai cosa portare con te e cosa butti via, imballalo in sacchetti e lo lasci nel corridoio principale. I traslochi vengono semplicemente, prendono le borse (già imballate) dal corridoio e le trasportano. In questo esempio, tutto fino a quando i traslochi non ottengono le tue cose, va in scena: decidi cosa va dove, come imballarle e così via (ad esempio puoi decidere che metà delle tue cose verrà buttata via prima ancora che i traslocatori arrivino lì - fa parte di messa in scena).
Da un punto di vista tecnico, la stadiazione supporta anche i commit transazionali, suddividendo tutte le operazioni in ciò che può fallire (stadiazione) e cosa non può fallire (commit):
Il commit in git viene implementato in modo transazionale, dopo che la stadiazione ha avuto successo. Diversi passaggi della gestione temporanea possono non riuscire (ad esempio, è necessario eseguire il commit, ma l'HDD è pieno al 99,9999% e git non ha spazio per eseguire un commit). Questo fallirà nella gestione temporanea (il repository non verrà danneggiato da un commit parziale) e il processo di gestione temporanea non influirà sulla cronologia del commit (non danneggerà il tuo repository in caso di errore).