Git配置:忽略项目所有.html文件但追踪指定文件夹及其子文件夹的.html文件
解决Git忽略所有.html但追踪指定文件夹下.html的问题
我来帮你搞定这个Gitignore的坑!你之前用*.html !ignore_directory/*没生效,是因为忽略规则的匹配逻辑有个容易被忽略的细节:
当你用*.html全局忽略所有.html文件后,Git会默认认为指定文件夹里的.html也被忽略了,而!ignore_directory/*只能匹配该文件夹直接子目录和文件,没法递归覆盖更深层级的子文件夹里的文件,而且更关键的是——如果Git觉得整个文件夹都没有需要追踪的内容,它甚至不会去扫描这个文件夹,后面的排除规则自然就没用了。
正确的配置应该是这样的:
# 全局忽略所有.html文件 *.html # 先取消对指定文件夹本身的忽略(必须步骤!) !ignore_directory/ # 递归取消忽略该文件夹下所有层级的.html文件 !ignore_directory/**/*.html
为什么要这么写?
*.html:先把所有.html文件都加入忽略列表,这是你的基础需求。!ignore_directory/:告诉Git“这个文件夹不能被忽略”,只有让Git认可这个文件夹需要被扫描,里面的文件规则才会生效。注意末尾的/是必须的,用来明确指定这是个文件夹。!ignore_directory/**/*.html:**是Gitignore里的递归通配符,能匹配该文件夹下所有子目录里的.html文件,确保不管文件在哪个层级都会被追踪。
验证规则是否生效
你可以用这个命令测试指定文件是否被正确识别:
git check-ignore -v ignore_directory/path/to/your-file.html
如果输出里显示你的排除规则(也就是那两行!开头的内容),或者没有输出,就说明规则生效了,这个文件会被Git追踪。
内容的提问来源于stack exchange,提问作者Amar Pal Singh
相关产品推荐
相关产品推荐

