Как удалить все неотслеженные файлы из моего рабочего каталога в Mercurial?

можно ли удалить все неотслеживаемые файлы из рабочего каталога? Предположим, я добавил кучу файлов в свой рабочий каталог, не добавил их через "HG add" и теперь хочу полностью избавиться от этих новых файлов?

Я на windows, хотя я использую PowerShell, поэтому комбинированное решение также возможно здесь.

9 ответов


добавьте расширение Mercurial под названием очистить. Он распространяется Mercurial.

это расширение добавляет команду " очистка "в" hg", которая удаляет файлы, не известные Mercurial. т. е. неотслеженные файлы. Так что ваша команда будет

hg purge

он не включен по умолчанию, возможно, чтобы избежать случайного удаления файлов, которые вы забыли добавить.

чтобы установить это расширение, добавьте его в файл настроек mercurial (.hgrc на Unix, Mercurial.ini on Windows)

[extensions]
purge = 

правильный путь без чистки:

hg st -un0 | xargs -0 rm

спасибо! Это сработало и для меня в Powershell:

hg st -un | rm

попробуйте следующее:

hg st -un | xargs rm

rm $(hg st -u)

...где-u означает "untracked", вы также можете выбрать другое состояние.


это должно сделать трюк:

hg status | grep '^\?' | sed 's/^\? //' | xargs rm -rf

Если вы не хотите использовать purge:

rm $(hg st | grep ^? | awk '{print }')

предполагая, что вы используете систему *nix, вы можете запустить что-то вроде этого:

rm `hg st | awk '/\?/ {print }'`

из корня репозитория mercurial.

Я не знаю стандартной команды mercurial для достижения того же самого, но я считаю, что для этого есть еще много вариантов командной строки. Я уверен, что есть" лучшие " решения и было бы интересно услышать любые другие предложения.

пожалуйста, используйте эту команду с осторожностью, так как он не был тщательно протестирован.


можно использовать

hg purge --all

чтобы удалить все игнорируемые и неотслеживаемые файлы

(сначала вам нужно установить расширение purge, как описано в некоторых ответах)