6

调用时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
4

2 回答 2

1

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

因为可能尚未应用所有更改。合并冲突可能发生在取消搁置操作的中途。在这种情况下,您需要将控制权交还给 Mercurial 以应用剩余的更改。

为什么我不能hg unshelve --continue --keep在不解决提交的情况下直接调用 - 以摆脱搁置状态?

如果您只是想摆脱搁置状态,并且不关心将更改正确应用到您的工作目录,您应该只做hg unshelve --abort. 该--continue标志用于在修复合并冲突后恢复取消搁置。Mercurial 不会让您在不解决冲突的情况下这样做,因为这会使您的工作目录处于损坏状态。

有关这些参数的更多信息,请参阅hg help unshelve

于 2015-05-04T14:32:34.450 回答
1

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

于 2015-05-09T10:49:52.167 回答