Что ж, если больше ничего не работает, вы всегда можете просто попросить Mercurial забыть обо всем, а затем вернуть empty
перед совершением:
Вот как я воспроизвел это, сначала создайте начальный репо:
hg init
md app
md app\tmp
echo a>app\empty
echo a>app\tmp\empty
hg commit -m "initial" -A
Затем добавьте некоторые файлы, от которых мы позже хотим избавиться:
echo a >app\tmp\test1.txt
echo a >app\tmp\test2.txt
hg commit -m "adding" -A
Затем забудьте файлы, которые нам не нужны:
hg forget app\tmp\*
hg status <-- will show all 3 files
hg revert app\tmp\empty
hg status <-- now empty is gone
echo glob:app/tmp>.hgignore
hg commit -m "ignored" -A
Обратите внимание, что все .hgignore
делает, чтобы Mercurial не обнаруживал новые файлы во время addremove
или commit -A
. Если вы явно отслеживали файлы, которые соответствуют вашему фильтру игнорирования, Mercurial все равно будет отслеживать изменения в этих файлах.
Другими словами,даже если я попросил Mercurial проигнорировать app/tmp
выше, файл empty
внутри не будет проигнорирован или удален, поскольку я явно попросил Mercurial отследить его.