.gitignore中能否使用正则匹配至少一个额外字符配置忽略规则
.gitignore 配置:仅追踪主.htaccess文件、忽略所有衍生配置文件
核心结论
.gitignore 不支持标准PCRE正则语法,采用fnmatch风格的glob通配匹配逻辑。你之前写的.htaccess(.)+属于正则写法,其中(、)、+都会被当作普通文件名字符处理,无法匹配目标文件,规则自然不会生效。
正确配置方案
把.gitignore中原有的.htaccess*规则删除,替换为以下任意一种等效规则即可。
方案1:最短匹配写法
.htaccess?*
规则逻辑:glob语法中?匹配1个任意非路径分隔符的字符,*匹配0个或多个任意非路径分隔符的字符,组合后只会命中.htaccess后跟随至少1个额外字符的文件,不会匹配文件名精确为.htaccess的主配置文件。
方案2:取反写法(可读性更强)
# 忽略所有.htaccess开头的文件 .htaccess* # 排除主配置文件,允许被Git追踪 !.htaccess
规则逻辑:先全量忽略所有.htaccess前缀的文件,再通过!前缀的反向规则,把精确命名为.htaccess的主文件移出忽略列表。
匹配范围验证
两种规则的效果完全一致,都会忽略你提到的所有衍生文件:
- .htaccess.local
- .htaccess.online
- .htaccess.testsite
- .htaccess_local.txt
- .htaccess_online.txt
- 其他所有
.htaccess后带额外字符的配置文件
主文件.htaccess不会被忽略,可正常纳入Git版本管理。
生效注意事项
如果之前相关文件已经被Git跟踪、或存在忽略缓存,执行以下命令清除缓存后重新提交即可让规则生效:
# 清除所有.htaccess相关文件的Git缓存 git rm -r --cached .htaccess* # 重新添加规则文件和主配置文件 git add .gitignore .htaccess # 提交变更 git commit -m "chore: track main .htaccess, ignore derivative config files"
内容的提问来源于stack exchange,提问作者ronrun
相关产品推荐
相关产品推荐

