2010-03-24 45 views
23

我是Mercurial的新手,在清理完项目中的图像文件夹之后,我有大量文件显示!在'hg状态'中。我可以为每个输入'hg forget',但必须有一个更简单的方法。如何使用Mercurial忘记所有移除的文件

那么,我该如何告诉mercurial忘记文件夹中所有已删除(status =!)文件?

+0

重复:http://stackoverflow.com/questions/2412239/how-to-do-mercurials-hg-remove-for- all-missing-files – Cullub 2016-01-18 20:24:30

+0

不完全是重复的,尽管解决任何一个都需要列出不在'ls'中显示的文件。该问题询问如何将删除的文件标记为已移除hg。这一个是如何* un *标记所有被移除的hg文件。 – 2016-07-20 16:51:32

回答

27

如果你也没关系与添加存在然后不忽略任何文件:

hg addremove 

将一种流行的方式来做到这一点。

+2

确实如此,在一个简写命令中添加未跟踪的文件并将缺少的文件标记为已删除。 +1 – VonC 2010-03-24 18:56:16

+0

绝对是这里的正确答案 – Jason 2011-05-04 04:00:46

+0

这也适用于递归文件夹遍历,其中 - 作为遗忘-I必须在要删除的文件的目录中执行。 – 2011-10-12 05:12:15

3

你可以试试:

hg forget -I '*' 

,以便在您忘记命令的所有文件。

+3

要小心,它不会捕获当前目录中以点开头的文件。 – 2010-03-24 18:47:45

+1

没有为我做任何事情:“中止:没有指定文件” – stian 2011-04-14 07:43:35

+0

为了超越根目录,您需要\ * \ *而不是*吗? ('hg help patterns') – 2016-07-20 16:48:47

9

随着文件集(水银1.9):

hg forget "set:deleted()" 

在一般情况下,在Linux或Mac:

hg status -dn | while read file ; do hg forget "$file" ; done 

或者,如果你的shell允许的话,如果没有太多的文件,并如果文件名不包含空格或特殊字符,则:

hg forget $(hg st -dn) 

1

通过使用状态-d标志,显示丢失的文件:在您的回购根

for file in $(hg status -d | cut -d " " -f 2); do echo hg forget $file; done

运行这一点,如果你对结果满意,去掉echo

这比已接受的答案而不是做了额外的工作,例如添加一堆未跟踪的文件。

+0

我得到了'没有这样的文件或目录'为每个文件,可能他们缺少。 – Grzenio 2012-11-13 09:41:46

0

更短,而不是

for file in $(hg status -d | cut -d " " -f 2); do echo hg forget $file; done 

hg status -d | cut -d " " -f 2 | xargs echo hg forget # test case 
hg status -d | cut -d " " -f 2 | xargs hg forget # real work 
相关问题