2013-03-27 62 views
22

假设我在Mercurial中输入了hg add,并且在我的工作目录中还有一些未被忽略的未跟踪文件。在没有明确输入每个文件的名称的情况下取消所有这些文件的最简单方法是什么?如何撤消Mercurial中所有添加的文件

我可以用一个命令取消它们吗?

+0

重复的http://stackoverflow.com/questions/6183374/undoing-last-addremove-in-mercurial – Eborbob 2016-01-15 13:45:40

回答

24

前言

你必须经常问的问题,其中包含尽可能多的信息可能。因为现在你的问题,根据某些条件,可能会有完全不同的答案。

案例之一 - 已经版本的文件没有本地修改,只增加(而不是提交)文件

hg revert后终于将返回你的工作目录的状态提交,撤消所有更改它了。

案例一 - 本地修改,要保存,偶尔添加的文件

  1. 阅读有关水银文件集。
  2. hg forget命令中使用文件集,如hg forget "set:added()"
-1

您可以随时重新克隆存储库,然后将工作文件夹中的.hg目录替换为新克隆中的.hg目录(假设您没有未完成的提交。 。)

+0

这似乎理论上可行但可能容易出错。我猜如果你有大量的本地修改,你不想在新的克隆中手动复制,这可能是最好的选择。反正创意解决方案! – DaveInCaz 2017-12-07 16:14:12

19

使用hg reverthg forget上的文件(包括为你做跑hg add文件相同)。为了避免打字文件名,你可以使用一个fileset这样的:

$ hg revert "set:added()" 

这将恢复文件恢复到它的工作拷贝父版本的样子,即,它会再次成为未知数。

+0

嗨,马丁。据推测,这不仅仅是“hg revert -a”,这也会恢复对现有文件的更改,更正确? – 2016-06-04 22:56:24

+0

@FaheemMitha确实。 – 2016-06-08 08:20:52

相关问题