From: Omar Othman Date: Wed, 26 Feb 2014 07:28:58 GMT Subject: Re: `git stash pop` UX Problem Message-ID: <530D97BA.1080107@booking.com> In-Reply-To: >> [omar_othman main (trunk|MERGING*)]$ git add path/to/file.txt >> [omar_othman main (trunk*)]$ >> >> Note how the status message has changed to show that git is now happy. >> It is at that moment that the stash reference should be dropped > Dropping the stash on a "git add" operation would be really, really > weird... > >> (or the user (somehow) is notified to do that herself if desired), >> because this means that the popping operation has succeeded. > But how would you expect to "be notified"? Answering the last question, your previous comments are fine with me: >> If there's any change that should be made it should be purely >> providing more detailed instructions to the user about how to deal >> with it. > Yes, there may be room for improvement, but that does not seem so easy. > Today, we have: > > $ git stash pop > Auto-merging foo.txt > CONFLICT (content): Merge conflict in foo.txt > > $ git status > On branch master > Unmerged paths: > (use "git reset HEAD ..." to unstage) > (use "git add ..." to mark resolution) > > both modified: foo.txt > > => The advices shown here are OK. Then: > > $ git add foo.txt > $ git status > On branch master > Changes to be committed: > (use "git reset HEAD ..." to unstage) > > modified: foo.txt > > => here, "git status" could have hinted the user "you may now run 'git > stash drop' if you are satisfied with your merge". Though I don't know why you think this is important: > Now, the real question is: when would Git stop showing this advice. I > don't see a real way to answer this, and I'd rather avoid doing just a > guess. If it is really annoying for the user, we can just have a configuration parameter to switch this message on/off. I don't know whether git has such customizations (in general) currently. This is very useful (maybe we can agree on wording later): > One easy thing to do OTOH would be to show a hint at the end of "git > stash pop"'s output, like > > $ git stash pop > Auto-merging foo.txt > CONFLICT (content): Merge conflict in foo.txt > 'stash pop' failed. Please resolve the conflicts manually. The stash > was not dropped in case you need to restart the operation. When you are > done resolving the merge, you may run the following to drop the stash reference: > > git stash drop