Add the ability to recover dropped Git stashes

This commit is contained in:
Sorin Ionescu 2012-05-21 17:22:49 -04:00
parent 7e60f13d7d
commit f932fa792e
3 changed files with 34 additions and 0 deletions

View file

@ -122,9 +122,11 @@ alias gs='git stash'
alias gsa='git stash apply'
alias gsc='git-stash-clear-interactive'
alias gsx='git stash drop'
alias gsd='git-stash-dropped'
alias gsl='git stash list'
alias gsL='git stash show --patch --stat'
alias gsp='git stash pop'
alias gsr='git-stash-recover'
alias gss='git stash save --include-untracked'
alias gsS='git stash save --patch --no-keep-index'

View file

@ -0,0 +1,18 @@
#
# Lists dropped Git stashed states.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
git fsck --unreachable 2> /dev/null
| grep 'commit' \
| awk '{print $3}' \
| git log \
${git_log_format_oneline}
--extended-regexp \
--grep="${1:-(WIP )?[Oo]n [^:]+:}" \
--merges \
--no-walk \
--stdin

View file

@ -0,0 +1,14 @@
#
# Recovers dropped Git stashed states.
#
# Authors:
# Sorin Ionescu <sorin.ionescu@gmail.com>
#
local commit
for commit in "$@"; do
git update-ref \
-m "$(git log -1 --pretty="format:%s" "$commit")" refs/stash "$commit"
done