mailing list mirror (one of many)
 help / Atom feed
From: Jeff King <>
To: Thomas Gummerer <>
Subject: [BUG] "git stash -- path" reports wrong unstaged changes
Date: Fri, 17 Mar 2017 10:50:39 -0400
Message-ID: <> (raw)

I used "git stash -- path" for the first time today and happened to
notice an oddity. If I run:

	git init -q repo
	cd repo
	for i in one two; do
		echo content >$i
		git add $i
	git commit -qm base
	for i in one two; do
		echo change >$i
	git stash -- one

it says:

  Saved working directory and index state WIP on master: 20cfadf base
  Unstaged changes after reset:
  M	one
  M	two

Even though "one" no longer has unstaged changes.

If I run with GIT_TRACE=1, that message is generated by:

  git reset -- one

which makes sense. At that stage we've just reset the index, but the
working tree file still has modifications. In the non-pathspec case we
run "git reset --hard", which takes care of the index and the working

It's really "checkout-index" that cleans the working tree, but it
doesn't have porcelain finery like an "Unstaged changes" message. I
think the patch below would fix it, but I wonder if we can do it in a
way that doesn't involve calling diff-files twice.


diff --git a/ b/
index 9c70662cc..9a4bb503a 100755
--- a/
+++ b/
@@ -299,10 +299,15 @@ push_stash () {
 		if test $# != 0
-			git reset ${GIT_QUIET:+-q} -- "$@"
+			git reset -q -- "$@"
 			git ls-files -z --modified -- "$@" |
 			git checkout-index -z --force --stdin
 			git clean --force ${GIT_QUIET:+-q} -d -- "$@"
+			if test -z "$GIT_QUIET" && ! git diff-files --quiet
+			then
+				say "$(gettext "Unstaged changes after reset:")"
+				git diff-files --name-status
+			fi
 			git reset --hard ${GIT_QUIET:+-q}

             reply index

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2017-03-17 14:50 Jeff King [this message]
2017-03-18 18:36 ` Thomas Gummerer
2017-03-19 20:23   ` Thomas Gummerer
2017-03-20 18:41   ` Jeff King

Reply instructions:

You may reply publically to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:

  List information:

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \ \ \ \ \

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link mailing list mirror (one of many)

Archives are clonable:
	git clone --mirror
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

Newsgroups are available over NNTP:

 note: .onion URLs require Tor:
       or Tor2web:

AGPL code for this site: git clone public-inbox