hg equivalent of git stash

anatoly techtonik techtonik at gmail.com
Mon Dec 12 11:09:07 CST 2011


On Mon, Dec 12, 2011 at 7:40 PM, Brendan Cully <brendan at kublai.com> wrote:

> On Monday, 12 December 2011 at 19:13, anatoly techtonik wrote:
> > On Mon, Dec 12, 2011 at 6:35 PM, Masklinn <masklinn at masklinn.net> wrote:
> >
> > > On 2011-12-12, at 16:15 , anatoly techtonik wrote:
> > > > Quoting http://markmail.org/message/lglewvoffuxnffbz
> > > > On Jan 12, 2008 3:27:01 pm, Matt Mackall wrote:
> > > >> On Sat, 2008-01-12 at 17:13 -0600, Phillip Koebbe wrote:
> > > >>> I was reading earlier today about "git stash" and was thinking it
> > > >>> would be very useful to me. Is something like that available in hg?
> > > >> You might be interested in mq, which is about a million times more
> > > >> useful.
> > > > Among million use cases for mq, can anybody explain the mq
> equivalent of
> > > > git stash?
> > > >
> > > > My use case: I want to put my current changes away temporarily (into
> > > > stash), do some unrelated changes, commit them and then get my
> previous
> > > > changes back (removing them from stash). How do I do this with mq?
> > >
> > >     > hg qnew -f [-i] [-m "reminder message"] some-patch-name [files…]
> > >    > hg qpop
> > >
> >
> > 'hg diff' doesn't show anything, so this solution is either wrong or
> > incomplete (thanks for the answer, I appreciate it, but it doesn't help
> > people who will be searching for 'git stash' recipe for mercurial).
>
> You've popped the patch at this point. It's tucked away in a patch
> file in .hg/patches right now. If you want to see the diff, the
> simplest way is to 'hg qpush' then 'hg qdiff'. Alternatively, 'cat
> .hg/patches/stash' is equivalent to git stash show.
>

Thanks, but I don't want to just see the diff - I need to restore my
working copy to the state it was before I stashed changes.

When you want to put the changes back into the working directory at
> the very end, run 'hg qref -X .' from the root to transfer them out of
> the patch. (Admittedly, this invocation has git-like clarity.)
>

I am puzzled. After 'hg qref -X .', 'hg qdiff' and 'hg diff' show the same
info. Did I break something?
Well, I started from. Your solution doesn't work either:

# put my changes into stash (mq patch named 'stash')
> hg qnew stash
> hg qpop
...
# pop my changes out of stash
> hg qpush
> hg qref -X .
## `hg qdiff` and `hg diff` now show identical info
> hg qdel stash
abort: cannot delete applied patch stash
> hg qpop
abort: local changes found, refresh first

catch22 =)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://selenic.com/pipermail/mercurial/attachments/20111212/9c0a0465/attachment.html>


More information about the Mercurial mailing list