Git不忽略带有字母数字模式的目录

时间:2018-09-13 01:57:29

标签: git

我试图忽略一些作为作业日志输出的目录。

ls -l
drwxr-xr-x  4 user  CHARLES\Domain Users  128 Sep 12 21:36 337c6c86-d49b-43cf-89ac-35c110ec6412

cat .gitignore
^[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+/$
^[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+-[0-9a-z]+$

但是git一直拒绝忽略它。

git忽略有关正则表达式模式的一些特殊规则吗?

谢谢!


编辑

感谢蒂姆建议澄清:

上面显示的是一个最小的可复制示例,其中git repo有一个名为337c6c86-d49b-43cf-89ac-35c110ec6412的子目录。 然后,.gitignore文件的内容将显示为cat

1 个答案:

答案 0 :(得分:2)

.gitignore仅遵循 glob 表达式;它没有正则表达式语法。

在全局格式中,您的选择是:

  • [:一组字符:恰好匹配一个这样的字符
  • ?:匹配任何字符(但总是一个正则表达式中的la .
  • *:匹配零个或多个字符

这些基于每个组件应用。总是暗示着锚定(^$a?c与名称aacabc匹配,但从不匹配abcddabc

(如果您包含斜杠,Git的规则会变得更加复杂,例如**可以匹配任意数量的子组件;但是现在就避免使用它。)

只要您的姓名固定长度且字符为十六进制(在[0-9a-f]中),您就可以使用:

[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]-[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-[0-9a-f][0-9a-f][0-9a-f][0-9a-f]-[0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f][0-9a-f]

(我通过输入您的示例并使用

s/[0-9a-f]/[0-9a-f]/g

作为编辑器命令,例如sed或vi)。