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
Kategorie: git