.gitignore使用通配符匹配文件夹时如何设置忽略例外规则
.gitignore通配符忽略规则例外不生效解决方案
核心原因
Git不会进入已经被整体标记为忽略的目录扫描子文件,因此针对被忽略目录内部文件的例外规则不会被触发。
你初始配置的**/_secrets或**/_secrets/是直接将整个_secrets目录设为忽略,Git直接跳过该目录的所有扫描逻辑,后续的!例外规则完全不会生效。
正确配置
按照以下顺序编写.gitignore规则:
# 允许Git扫描所有层级的_secrets目录,不要直接忽略目录本身 !**/_secrets/ # 忽略_secrets目录下的所有内容 **/_secrets/* # 添加指定文件的例外 !**/_secrets/not_a_secret.txt
生效操作
规则修改完成后,需要执行以下命令清除Git本地缓存,让新规则立即生效:git rm -r --cached .
执行完成后重新执行git add .即可正常识别not_a_secret.txt文件。
之前尝试的写法问题说明
!**/not_a_secret.txt:规则逻辑正确,但因上层_secrets目录被整体忽略,规则无法被触发!(**/_secrets/not_a_secret.txt):属于无效语法,Gitignore不支持该格式的通配符写法- 仅将
**/_secrets改为**/_secrets/仅明确了忽略对象为目录,没有解决目录被跳过扫描的核心问题
内容的提问来源于stack exchange,提问作者g.pickardou
相关产品推荐
相关产品推荐

