From 869fb8f729a4e3486ea3c37820e97548223fac6a Mon Sep 17 00:00:00 2001 From: Thomas Gummerer Date: Tue, 21 Mar 2017 22:12:18 +0000 Subject: [PATCH] stash: pass the pathspec argument to git reset For "git stash -p --no-keep-index", the pathspec argument is currently not passed to "git reset". This means that changes that are staged but that are excluded from the pathspec still get unstaged by git stash -p. Make sure that doesn't happen by passing the pathspec argument to the git reset in question, bringing the behaviour in line with "git stash -- ". Signed-off-by: Thomas Gummerer Reviewed-by: Jeff King Signed-off-by: Junio C Hamano --- git-stash.sh | 2 +- t/t3904-stash-patch.sh | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/git-stash.sh b/git-stash.sh index ba86d84321..13711764a9 100755 --- a/git-stash.sh +++ b/git-stash.sh @@ -322,7 +322,7 @@ push_stash () { if test "$keep_index" != "t" then - git reset -q + git reset -q -- "$@" fi fi } diff --git a/t/t3904-stash-patch.sh b/t/t3904-stash-patch.sh index 38e730090f..83744f8c93 100755 --- a/t/t3904-stash-patch.sh +++ b/t/t3904-stash-patch.sh @@ -77,6 +77,14 @@ test_expect_success 'git stash --no-keep-index -p' ' verify_state dir/foo work index ' +test_expect_success 'stash -p --no-keep-index -- does not unstage other files' ' + set_state HEAD HEADfile_work HEADfile_index && + set_state dir/foo work index && + echo y | git stash push -p --no-keep-index -- HEAD && + verify_state HEAD committed committed && + verify_state dir/foo work index +' + test_expect_success 'none of this moved HEAD' ' verify_saved_head '