在一些 .gitignore 文件中,我们可能会看到:
somedirectory/*
或者
somedirectory/
这是否意味着第一个将递归匹配,而第二个将仅匹配该目录?
后者匹配目录,但忽略目录意味着忽略它的所有内容。所以它是递归的。
对于前者,* 将只匹配直接条目。但是由于它也会匹配目录并且忽略目录意味着忽略它的所有内容,它也是递归的。
Git 不跟踪目录,所有内容都被忽略的目录和被忽略一样好。
因此没有实际的区别。
它们都将递归匹配。但是您不应该使用somedirectory/*
模式,因为它与somedirectory/
自身不匹配。因此,如果您有一个缓存文件夹cache/
并忽略模式cache/*
,那么git clean -fd
将删除cache/
其中包含所有文件的目录。
注意 IDE 的模式 :) 忽略模式.idea/*
会导致清除项目的所有设置。