回滚Mercurial中的最后一个命令

时间:2012-11-23 14:39:58

标签: mercurial

我跑了:

hg add .*

匹配所有../something个文件,这是我当然不想要的!撤消此命令的最简单方法是什么?

3 个答案:

答案 0 :(得分:3)

不完全是我追求的,但让我的生活更轻松:

hg forget "set:added()"

这将取消标记工作存储库中添加的所有文件。显然我也没有标记在前面命令中添加的所有文件,所以我说这不是我之后所说的......

答案 1 :(得分:2)

如果你有很多未提交的补充,你不想要做,你可以使用一个mercurial文件集,只在父目录的子目录中选择挂起的 (在发出错误命令的同一目录中使用它):

hg forget "set:../** and added()"

Mercurial不记得你用来引用文件的路径,所以这会忘记刚添加的所有文件(在父目录下);但如果你深入一个大型存储库,它将限制你丢弃的范围。

您的问题与this recent question,类似,但此处我们对错误添加的文件名有一个额外的条件。

答案 2 :(得分:1)

没有内置的撤消hg add命令的方法。

潜在的问题是hg add正在操纵所谓的“dirstate”(“工作目录状态”的缩写。这是存储等待更改的文件,例如计划提交的文件) - 此存储是无版本的

但是有一个扩展可以帮助您:hg-multiundo将备份Mercurial触及的所有文件,包括dirstate。这意味着您可以使用它来撤消hg add甚至hg revert --no-backup等内容。