我想忽略整个存储库中的所有目录“_notes”。 _notes由dreamweaver生成,不属于项目本身,但这些目录分散在整个项目中。
不知何故^ _notes $没有在.hgignore中完成这项工作......我是否必须将.hgignore指向每个目录“_notes”或者它是否以递归方式执行?
我对手册页不太确定
答案 0 :(得分:5)
尝试:
syntax: glob
_notes/*
我应该提一下,如果已经添加了目录,你就不能忽略它们。使用hg忘记如果您使用较新的Mercurial版本,就是这种情况。
答案 1 :(得分:1)
syntax: glob
_notes
这不是特定于目录的,因此如果您有任何具有该确切名称的文件,它们也将被忽略。
示例:
$ hg init subu && cd subu
$ mkdir _notes
$ mkdir a && mkdir a/_notes
$ echo 'syntax: glob' >>.hgignore
$ echo '_notes' >>.hgignore
$ touch file.txt
$ touch _notes/file.txt
$ touch a/file.txt
$ touch a/_notes/file.txt
$ hg st -A
? .hgignore
? a/file.txt
? file.txt
I _notes/file.txt
I a/_notes/file.txt
答案 2 :(得分:0)
正如您的评论所揭示的那样,您无法使其发挥作用的原因是已经存储在存储库中的优先级高于.hgignore。 (想象一下,如果.hgignore优先考虑可能出现的令人讨厌的问题!搞清楚一个正则表达式,你可能会停止跟踪你回购的一半)
要从回购中删除内容,您可以使用hg remove
或hg forget
(这是hg remove -Af
的别名)。您可能希望使用hg forget
,因为这会将其从存储库中删除,但不会删除本地副本; hg remove
将(不使用-Af)删除本地副本
答案 3 :(得分:-1)
这将完成这项工作:
syntax: regexp
/_notes/
如果您想要检查存储库忽略哪些文件,您可以尝试:
hg stat -i
这将列出hg通过.hgignore成功忽略的所有文件,在向存储库添加任何内容之前,它很适合调试。
!以前添加到存储库的文件不会被忽略!