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