令人困惑的.gitignore语法

令人困惑的.gitignore语法,git,mercurial,gitignore,Git,Mercurial,Gitignore,我正在阅读,用来解释忽略模式的6点似乎描述了glob搜索语法的自定义变体。 我更熟悉Mercurial,它允许通过glob或regex模式显式忽略,不需要任何问题 Git中有类似的功能吗 有人能给我指出一些比Git手册更详尽的参考资料吗 最佳, t没有通过正则表达式排除的内置方式。如果有,你会在手册页上看到。不完全是。 可以使用类似bash的语法,您可以指定如下内容: *tmp.*~ 这与regExp相同:*tmp.*~ 希望这对你有帮助 所有的globbing在某种程度上都是定制的——它依

我正在阅读,用来解释忽略模式的6点似乎描述了glob搜索语法的自定义变体。 我更熟悉Mercurial,它允许通过glob或regex模式显式忽略,不需要任何问题

  • Git中有类似的功能吗
  • 有人能给我指出一些比Git手册更详尽的参考资料吗
最佳,

t

没有通过正则表达式排除的内置方式。如果有,你会在手册页上看到。

不完全是。 可以使用类似bash的语法,您可以指定如下内容:

*tmp.*~

这与regExp相同:
*tmp.*~


希望这对你有帮助

所有的globbing在某种程度上都是定制的——它依赖于shell。据推测,Mercurial也提供了自己的globbing版本;根据用户的shell来改变行为没有多大意义。谢谢,我已经阅读了你的其他答案,这有助于澄清一些问题。然而,上面的评论似乎与您和VonC的观察相矛盾,即Git会恢复到用户的shell glob语法允许的任何形式。在您的评论之后重新阅读时,手册页实际上提到了对fnmatch()和用户shell的排除依赖性(最后两点),我认为这并不取决于用户的shell。文档有点混乱,你是对的,但在任何情况下都使用fnmatch。该文档仅使用短语“shell glob”作为fnmatch更具可读性的替代。该代码从未实际调用用户的shell。至于另一个问题的答案。。。问题是有人试图使用git,所以shell在git有机会看到它之前就扩展了globbing。正如其他人所指出的,引用glob模式可能会导致它通过git,在git中(如果所讨论的命令支持globbing),它将通过fnmatch进行扩展。似乎kernel.org上的许多网站内容在一些安全漏洞之后都消失了。请参阅主页上的说明。正如我在您之前的回答中提到的(以及Chris Johnsen在同一问题中的详细信息),所有基于模式的文件选择都被委托给
fnmatch()
函数,不是吗?这不是真的jefromi,
!模式
否定一个match@AD7six:是的,gitignore模式不是正则表达式。通过“没有通过正则表达式排除的内置方式。如果有,您会在手册页上看到它“您只是想说吗”。gitignore不支持正则表达式”?写下来真让人困惑。@iconoclast:这就是我的意思,是的。按照我的措辞,它还表明除了gitignore(和其他排除文件)之外,没有其他支持regex的内置机制?记住:你的答案不一定会按照你最初发布时的顺序出现,所以回复之前的答案或评论不是一个好主意。此外,甚至问题也可能被修改,其他答案也可能被删除。