为什么.gitignore用通配符*排除后,.config目录未出现在git status列表中?
问题根因
该现象是Git 2.34.1之前版本的已知匹配逻辑bug,你原本编写的.gitignore规则本身没有逻辑问题。
最优解决方案
直接将你的Git版本升级到2.34.1及以上版本,升级完成后你原本的配置即可正常生效,.config目录会正常出现在未跟踪文件列表中:
# Ignore everything * # Except these files and folders !.*
旧版本兼容方案
如果你暂时无法升级Git版本,可使用以下兼容规则实现需求,既不会纳入Documents、Downloads等非隐藏目录,也能正常识别所有隐藏目录:
# 忽略所有内容 * # 放行所有以.开头的隐藏文件 !.* # 放行所有隐藏目录的扫描权限 !.*/ # 下方可自行追加不需要备份的隐藏目录/文件,按需调整即可 .cache/ .zsh_history .ssh/
如果修改规则后仍不生效,可执行git rm -r --cached .清理Git本地缓存后再重新查看状态。
内容的提问来源于stack exchange,提问作者an4s911
相关产品推荐
相关产品推荐

