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