Schowki pozwalają przechowywać kilka wersji plików. Schowki działają na zasadzie stosu FIFO.
Aby stworzyć schowek z bieżącej wersji plików (komenda przywraca wszystkie zmienione pliki od ostatniego commita)
git stash
Aby dodać komentarz przy zapisywaniu schowka
git stash save komentarz
gdzie komentarz może zawierać dowolne znaki, również spacje.
Powyższe komendy nie dodają plików nieśledzonych (nowych). Przełącznik -u je dodaje
git stash save -u komentarz
Aby przywrócić pliki ze schowka i skasować je ze stosu
git stash pop
Aby przywrócić pliki ze schowka ale nie skasować ich ze stosu
git stash apply
Aby pokazać listę schowków (pokazuje również zachowane komentarze)
git stash list
Aby porównać zawartość plików w schowku z bieżącymi (zakładając nazwę schowka stash@{0}
git stash show -p stash@{0}
Aby usunąć ostatni schowek
git stash drop
jako parametr mogę podać konkretny schowek
git stash drop stash@{2}
Aby zmienić nazwę schowka, tworzę nowy alias (alias trzeba utworzyć z git-bash) – rozwiązanie z SO:
git config --global alias.stash-rename '!_() { rev=$(git rev-parse $1) && git stash drop $1 || exit 1 ; git stash store -m "$2" $rev; }; _'
a potem go używam
git stash-rename[ ]
Uwaga! Zmieniony schowek będzie jako zerowy.
Aby porównać zawartość schowka z aktualnymi plikami:
git stash show -p > stash.diff
Aby przywrócić usunięty schowek (pod warunkiem, że na ekranie mam ciągle id tego usuniętego schowka):
git stash apply @dropped-stash-id