Junio C Hamano <gitster@xxxxxxxxx> writes: > Ricardo C <rpc01234@xxxxxxxxx> writes: > >> Permanently enabling keepIndex is mainly intended for people that like >> to stash their unstaged changes before committing (e.g., for testing >> them independently of other changes). The main issue with what you >> recommend is that, if they forget to use `-k`, then the entire state >> of the index is lost, which is especially problematic if the changes >> were interactively staged. > > Doesn't "git stash pop --index" meant to recover from such a > mistake, though? If you stash, because your "git commit" notices > there is no change after you did "git stash" without "-k", your > recovery to "pop --index" would apply the changes to the index and > to the working tree on top of exactly the same commit, so there is > no risk of losing any changes by doing so, right? IOW, such a pop > will always round-trip. Actually, "git commit" gets into the picture of making and recovering from such a mistake a bit more costly than I made it sound in the above. My bad. The common sequence is $ edit edit edit $ git add -p $ git stash -k $ build what is in the index and test and then when you are happy, conclude it with $ git commit [NO -o/-i/pathspec] followed by $ git stash pop to continue for the next commit. So "git commit" should notice if your earlier "stash -k" forgot to say "-k", but by that time, you would have wasted the whole build and test cycle. The HEAD wouldn't have moved, so the conclusion that "pop --index" would be a good way to recover from "stash" without "--keep" does not change, though.