2010-05-25 108 views
8

我在读http://www.kernel.org/pub/software/scm/git/docs/v1.7.10/gitignore.html,用来解释忽略模式的6个点似乎是描述了glob搜索语法的自定义变体。 我对Mercurial更加熟悉,它允许通过glob或regex模式明确地忽略,而不会问任何问题。混淆.gitignore语法

  • Git中有没有类似的功能?
  • 任何人都可以指出我比Git手册页更详尽的参考吗?

最佳,
牛逼

+0

所有通配符都是在某个级别自定义的 - 它与shell相关。据推测,Mercurial也提供了它自己的版本,根据用户的shell而改变行为没有什么意义。 – Cascabel 2010-05-25 16:55:43

+1

谢谢,我已阅读您的其他答案http://stackoverflow.com/questions/2899875/git-add-not-working-with-png-files/2900049#2900049这有助于清理一些事情。 但是,上面的注释似乎与您和VonC的观察相矛盾,即Git会回复到用户的shell glob语法允许的任何内容。 在您的评论之后重新阅读时,手册页实际上提到排除依赖于fnmatch()和用户的shell(最后两点) – tmslnz 2010-05-25 18:16:01

+0

我不认为这取决于用户的shell。这里的文档有点令人困惑,你说得对,但在任何一种情况下都使用fnmatch。该文档仅使用短语“shell glob”作为fnmatch的一个更易读的替代品。代码从未实际调用用户的shell。 – Cascabel 2010-05-26 13:31:05

回答

1

不完全。 它可以使用bash类似的语法,在那里你可以指定这样的东西:

*tmp_*~

是一样的正则表达式:.*tmp_.*~

希望这将帮助你!

+1

不完全*什么*?请记住:您的答案不一定会以最初发布时的顺序出现,因此回复以前的答案或评论并不是一个好主意。此外,即使这个问题可能会被修改,其他答案可能会被删除。 – iconoclast 2012-06-20 20:47:01

+0

你是对的,谢谢! 我忘了这个事实... – 2012-06-21 08:02:53

3

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

+0

正如我在你之前的回答中提到的http://stackoverflow.com/questions/2899875/git-add-not-working-with-png-files/2900049#2900049(以及克里斯约翰森在同一个问题中的细节),所有基于模式的文件选择委托给'fnmatch()'函数,不是这样。 – VonC 2010-05-25 17:54:11

+0

不是真正的jefromi,'!pattern'否定匹配 – AD7six 2012-01-30 11:25:28

+0

@ AD7six:是的,** gitignore模式不是正则表达式**。 – Cascabel 2012-01-30 15:21:23