Git配置.gitignore:忽略目录及子目录所有文件仅保留.conf文件
Git .gitignore 正确配置:忽略/some/dir/所有文件但保留.conf格式文件
原配置失效的核心问题是!/some/dir/**/这一行递归取消了所有子目录的忽略状态,导致子目录内的非.conf文件也不会被忽略。以下是正确的配置方案:
# 忽略/some/dir/下的所有直接文件和子目录 /some/dir/* # 递归允许Git扫描所有子目录(否则深层.conf文件会因目录被忽略而无法匹配例外规则) !/some/dir/**/ # 递归保留所有子目录下的.conf格式文件 !/some/dir/**/*.conf
配置说明:
/some/dir/*:匹配/some/dir/下的所有直接文件和一级子目录,将它们设为忽略状态!/some/dir/**/:通过递归例外规则,让Git能够遍历/some/dir/下的所有深层子目录,这是确保后续.conf文件规则生效的关键——如果目录被完全忽略,Git不会扫描其中的文件,例外规则也就无法触发!/some/dir/**/*.conf:递归匹配所有子目录下的.conf文件,将它们从忽略列表中排除
注意事项:
如果/some/dir/下已有文件被Git追踪过,需要先执行以下命令清除缓存,再重新提交,规则才会生效:
git rm --cached -r /some/dir/
内容的提问来源于stack exchange,提问作者José Otero
相关产品推荐
相关产品推荐

