我想忽略整个存储库中的所有目录“_notes”。_notes 是由dreamweaver 生成的,并不是项目本身的一部分,但是这些目录分散在整个项目中。
不知何故 ^_notes$ 没有在 .hgignore 中完成这项工作......我是否必须将 .hgignore 指向每个目录“_notes”还是递归地执行它?
我不太确定手册页
尝试:
syntax: glob
_notes/*
我可能应该提到,如果已经添加了目录,则不能忽略它们。如果您使用的是较新的 Mercurial 版本,请使用 hg forget,就是这种情况。
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
正如您的评论所揭示的,您无法使其工作的原因是已经在存储库中优先于 .hgignore。(想象一下,如果 .hgignore 优先,可能会出现令人讨厌的问题!弄乱一个正则表达式,您可能会停止跟踪一半的回购)
要从 repo 中删除东西,你可以使用hg remove
or hg forget
(它是 hg 的别名remove -Af
)。您可能希望使用hg forget
它,因为这会将其从存储库中删除,但不会删除本地副本;hg remove
将(没有 -Af)也删除本地副本
这将完成这项工作:
syntax: regexp
/_notes/
如果您想检查存储库忽略了哪些文件,可以尝试:
hg stat -i
这将列出 hg 通过 .hgignore 成功忽略的所有文件,在将任何内容添加到存储库之前进行调试非常有用。
!以前添加到存储库的文件不会被忽略!