为何.gitignore无法递归忽略tools目录下的非Python文件?
问题原因与解决办法
你的.gitignore规则无效的核心原因是Gitignore的否定规则(!)只能取消已经被标记为忽略的文件,而你只写了!tools/**/*.py,没有先告诉Git“要忽略tools目录下的所有内容”——那些非Python文件本来就不在Git的忽略列表里,自然谈不上“取消忽略”来保留py文件,反而你的规则完全起不到过滤非py文件的作用。
正确的配置需要分三步:
- 第一步:先忽略tools目录下的所有内容
- 第二步:取消对tools下所有子目录的忽略(Git不会扫描被忽略的目录,所以必须先让目录可被遍历)
- 第三步:取消对所有.py文件的忽略,保留这些文件
对应的.gitignore代码如下:
# 忽略tools目录下的所有内容 tools/ # 保留tools下的所有子目录,确保Git能扫描到里面的文件 !tools/**/ # 保留所有.py文件 !tools/**/*.py
这样配置后,tools目录下所有非.py文件都会被忽略,只有.py文件会被Git追踪。
内容的提问来源于stack exchange,提问作者marlon
相关产品推荐
相关产品推荐

