2010-03-24 55 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 
相關問題