gitignore中`*`和`/*`的区别

发布时间 2023-06-04 13:22:49作者: 顺其自然,道法自然

*可以匹配所有的字符(不含/), 包括目录和子目录下的所有文件或者目录; 而/*匹配根目录下面的所有文件或者目录, 不包括子目录, 对于下面的目录结构:
image

  • *匹配的是全部文件和目录
  • /*匹配的内容如下面的红色字体所示, 黑色字体表示没有被匹配, 但由于上层目录被忽略, 所以下层目录和文件也被忽略, 似乎和*的作用是一样的, 其实不然, 如果加上排除选项!, 二者就有区别了.
    /A1/
    /A1/a.txt
    /A1/b.txt
    /B1/
    /B1/A2/
    /B1/a.txt
    /B1/b.txt
    /.gitignore
    /a.txt
    比如, 下面的例子中, *表示忽略所有的文件和目录, 既使下面!/A1排除掉A1目录, 也仅仅是A1目录没有被忽略, 但是git管理是针对文件的, 不是针对目录的, 所以单独一个A1目录也不会被纳入管理, 如下所示:
    image
    但是, 如果是/*, 排除掉A1之后, A1下面的文件也被排除掉了, 如下所示:
    image