Browse Source

Add the ability to recover dropped Git stashes

master
Sorin Ionescu 13 years ago
parent
commit
f932fa792e
  1. 2
      modules/git/alias.zsh
  2. 18
      modules/git/functions/git-stash-dropped
  3. 14
      modules/git/functions/git-stash-recover

2
modules/git/alias.zsh

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

18
modules/git/functions/git-stash-dropped

@ -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

14
modules/git/functions/git-stash-recover

@ -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
Loading…
Cancel
Save