使用“hg unshelve”就像使用Git打开一样

时间:2015-04-07 17:12:57

标签: mercurial shelve unshelve

当调用hg unshelve --keep并且发生冲突时,我需要解决冲突,然后再次调用hg unshelve --continue --keep。为什么最后一步是必要的?为什么我不能在不解决提交的情况下直接调用hg unshelve --continue --keep - 为了摆脱不受欢迎的状态?

c:\temp\hg test>hg st
M new.txt

c:\temp\hg test>hg commit -m "fjdjkfs"

c:\temp\hg test>hg unshelve --keep
unshelving change 'shelve'
adding changesets
adding manifests
adding file changes
added 1 changesets with 1 changes to 1 files (+1 heads)
merging new.txt
warning: conflicts during merge.
merging new.txt incomplete! (edit conflicts, then use 'hg resolve --mark')
unresolved conflicts (see 'hg resolve', then 'hg unshelve --continue')

c:\temp\hg test>hg st
M new.txt
? new.txt.orig

c:\temp\hg test>hg unshelve --keep --continue
abort: unresolved conflicts, can't continue
(see 'hg resolve', then 'hg unshelve --continue')

c:\temp\hg test>hg resolve --mark

c:\temp\hg test>hg unshelve --keep --continue
no changes needed to new.txt
unshelve of 'shelve' complete

c:\temp\hg test>hg st
warning: ignoring unknown working parent 11667b875a2d!
? new.txt.orig

2 个答案:

答案 0 :(得分:1)

  

为什么最后一步是必要的?

因为可能并非所有更改都已应用。合并冲突可能发生在不安全的行动的中途。在这种情况下,您需要将控制权传递回Mercurial以应用其余更改。

  

为什么我无法在不解决提交的情况下直接调用hg unshelve --continue --keep来摆脱不受欢迎的状态?

如果您只是想摆脱不受欢迎的状态,并且不关心将更改正确地应用到您的工作目录,那么您应该hg unshelve --abort--continue标志用于在修复合并冲突后恢复unshelve。 Mercurial不会让你这样做而不解决冲突,因为这会使你的工作目录处于破碎的状态。

有关这些参数的详细信息,请参阅hg help unshelve

答案 1 :(得分:1)

这似乎是我使用的Mercurial版本的一个问题。使用最新版本3.4,它按预期工作。