Le stash est une quatrième zone qui n'est pas relié au repository ou au staging index.
Un cas courant est le suivant :
on fait un changement sur une branche
on souhaite changer de branche : git indique que faire un checkout <branche> va aboutir à la perte des changements effectués et demande de faire un commit ou de stasher ces changements
git stash save “message”
les changements sur les fichiers trackés sont alors stockés dans le stash
git effectue en même temps l'équivalent d'un git reset –hard : le contenu du repo pointé par HEAD est placé dans le working directory
note: si l'on a des fichiers non trackés que l'on souhaite inclure dans le stash, on peut utiliser l'option include untracked (voir doc).