我希望Mercurial忽略具有特定扩展名的任何文件。
例如,我想忽略扩展名为.SUO的文件。 (无需对Visual Studio用户设置进行版本控制。)
因此,我将.hgignore文件更改为:
syntax: glob
*.suo
但是,这没有任何效果,Mercurial仍然可以看到我的.suo文件。
我在这里做错了什么?
最佳答案
如果在更改.hgignore文件之前运行hg status
时,.suo文件前面带有?
,则现在应将其忽略。如果还有其他任何内容(例如M
或A
),则存储库已经对其进行了跟踪,并且不会神奇地停止对其进行跟踪。在这种情况下,您需要对文件执行hg remove
删除它并让hg停止跟踪它,或者只对它执行hg forget
以使hg停止跟踪它但保留文件。在这两个之后都应提交。
如果路径与.hgignore文件中的模式匹配的文件,则状态列表中仅会忽略的文件是未跟踪的文件。省略跟踪的文件是没有意义的,因为您将永远看不到它是否已被修改,添加或删除。
编辑:Mercurial仅跟踪文件(您不能使其跟踪空目录),但是.hgignore中的模式仅针对相对于存储库根目录的文件路径字符串运行。运行hg status
时,它显示的相对路径非常相同。因此它确实可以按您说的那样工作,因为以下几行是我自己的.hgignore文件的标准部分:
语法:glob
* \ obj \ *
* \ bin \ *
* .csproj.user
* .suo
同样,当您运行hg status
并显示一个.suo文件时,该行的开头是哪个字符?它是M
,A
,R
,!
或?
字符吗?它走的路是什么?
关于mercurial - 如何使Mercurial忽略任何扩展名为.xxx的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6067152/