如何让子目录中的.gitignore忽略项目任意层级的文件或目录?
问题解答
首先明确:子目录中的.gitignore无法忽略其父目录(比如你的项目根目录)的文件或文件夹。Git的忽略规则是从规则所在目录向下生效,只能匹配当前目录及子目录内的内容,没法向上匹配父层级的文件/文件夹。
针对你的需求,有两种可行的解决方式:
方式1:标准做法(推荐)
把a/a2/a3/里的.gitignore移动到项目根目录,然后修改内容为:
c/
添加斜杠/是为了明确匹配目录,避免和同名的普通文件混淆。这样Git就能正确忽略根目录下的c文件夹。
如果之前c文件夹已经被Git追踪过,还需要执行以下命令让Git停止追踪它:
git rm -r --cached c
方式2:保留子目录.gitignore的替代方案
如果一定要保留子目录中的.gitignore,同时忽略根目录的c,可以在项目根目录新建一个.gitignore文件,写入c/即可。
或者使用Git的本地配置指定全局忽略文件:
- 在项目根目录创建一个自定义忽略文件(比如
.gitignore_project),写入c/ - 执行命令:
git config --local core.excludesfile .gitignore_project
这种方式相当于给当前项目设置了一个全局生效的忽略规则文件,但不如直接在根目录放.gitignore直观,一般不推荐。
内容的提问来源于stack exchange,提问作者SZx
相关产品推荐
相关产品推荐

