Mercurial:无法取消搁置的更改

Mercurial: Unable to unshelve shelved changes

似乎 ShelveExtension 只搁置了您修改过的文件,未跟踪或删除。

我是 Mercurial 的新手,来自 git,所以对我来说这不是预期的。

更大的问题我无法 hg unshelve 我认为是一条错误消息。

见下文:

unshelving change 'main'

temporarily committing pending changes (restore with 'hg unshelve --abort')

rebasing shelved changes

abort: uncommitted changes

这是预期的行为吗,我只是漏掉了什么?

如果没有 restoring/committing/etc,我如何取消搁置我修改过的文件?

是否有行为与 git stash 完全相同的扩展程序?

重现步骤:

环境:

OS: Windows 8

Mercurial:Mercurial 分布式 SCM(版本 3.0.1)。 安装为 cygwin /usr/bin/hg(未安装 Tortoisehg,Windows hg 已安装但未使用)

分机:ShelveExtension.

Is that an expected behavior and I am just missing something?

是的,这是正常行为。如果您希望 Mercurial 跟踪文件的创建和删除,您需要执行 hg addremove(或手动 hg addhg rm 单个文件)。重命名应使用 hg mv 完成。这有点类似于 git add,只是您不需要对修改的文件执行此操作。

取消搁置时,您的工作目录应该是干净的。至少,它不应该有任何丢失的文件(前缀为 hg st 中的 !)或任何修改的文件(前缀为 M)。您可以随时进行临时提交,hg strip 稍后提交。

How could I unshelve my modified files without restoring/committing/etc.?

在一般情况下,没有明智的方法可以做到这一点。如果书架包含对不再存在的文件的更改怎么办?如果文件删除已提交,您可能会产生补丁冲突,而这正是 Mercurial 所做的。但是没有commit to conflict with,这种情况没有明显的响应。

Is there an extension which behaves exactly like git stash?

据我所知,但这超出了 Whosebug 的范围。