]> Tony Duckles's Git Repositories (git.nynim.org) - dotfiles.git/commitdiff
bin/git-amend: Smarter 'git stash' handling
authorTony Duckles <tony@nynim.org>
Sun, 31 Dec 2017 16:32:27 +0000 (10:32 -0600)
committerTony Duckles <tony@nynim.org>
Sun, 31 Dec 2017 19:18:40 +0000 (13:18 -0600)
- Fix 'stash pop' handling to always restore back to the stashed
  changes afterwards.
- Only stash if there are local modifications.

bin/git-amend

index 9101a67588329a264aaa646bc38f2f5e47a7a97b..7369128973d9262c8aea5400c2555e9979d55a69 100755 (executable)
@@ -23,12 +23,15 @@ test -z "$TARGET" && {
   exit 1
 }
 
-# stash off work tree modifications leaving the
-# index for amending to the target commit
-git stash save -q --keep-index git-amend
-
+# if there are local work tree modifications, stash those off leaving
+# the index for amending to the target commit
+DIRTY=0
+if ! git diff-files --quiet --ignore-submodules --; then
+  DIRTY=1
+fi
+test $DIRTY -eq 1 && git stash save -q --keep-index git-amend
 # always restore from stash before exiting
-trap 'git stash pop -q stash@{git-amend} 2>/dev/null' EXIT
+test $DIRTY -eq 1 && trap 'git stash pop -q stash@{0} 2>/dev/null' EXIT
 
 # go back in history
 git checkout -q "$TARGET" || {