我忘记将正确的.hgignore放入我的项目中,现在我的存储库中遇到了许多无用的文件。由于这些文件已经在源代码管理下.hgignore不会选择它们。
hg是否有办法忘记.hgignore匹配的所有文件?
答案 0 :(得分:66)
filesets非常棒(需要1.9):
hg forget "set:hgignore() and not ignored()"
答案 1 :(得分:2)
您需要删除该文件才能将其忽略。
hg remove -Af myfile
(在工作区留下副本时删除修订版:或hg forget
)
但是你的Mercurial存储库不会“忘记”以前版本中的那些文件。
删除文件不会影响其历史记录 重要的是要理解删除文件只有两个效果。
- 它从工作目录中删除当前版本的文件。
- 从下次提交时起,它阻止Mercurial跟踪对文件的更改。
删除文件不会以任何方式改变文件的历史记录。
另一种方式,当你有很多额外的文件时,现在需要忽略的是:
hg addremove
(警告,它会添加当前未提交的文件,但它会hg remove
您刚刚提交的所有其他文件)答案 2 :(得分:2)
我认为hg不能开箱即用。
但是自己动手很容易。 hgignore条目是regexp或glob,所以你可以浏览条目并找到匹配的文件/ dirs并对它们执行“hg remove”。
对于hgignore解析/匹配,如果使用python,你可以在hg的ignore.py中调用函数。
也许有人可以为此写一个扩展名。
答案 3 :(得分:0)
这就是我为.hgignore
中提到的每个目录所做的 for /f "delims=" %i in ('dir bin /ad/s/b') do hg forget %i/
对于文件
for /f "delims=" %i in ('dir *.user /s/b') do hg forget %i
<强>声明:强>
我不知道它是否适用于非Windows操作系统。
答案 4 :(得分:0)
Idan K的解决方案很棒。我将别名添加到我的全局mercurial.ini中,因为我不记得该命令了。
[alias]
forgetignored = forget "set:hgignore() and not ignored()"