Git忽略含_data名称文件夹失效:能否通过名称部分匹配实现?
解决.gitignore中匹配含
_data文件夹的忽略需求 首先,咱们先搞清楚为什么你之前加的**/*_data/规则没生效——大概率是这些_data文件夹里的文件已经被Git追踪过了。Git的.gitignore只对未被追踪的文件生效,已经被add/commit过的文件,哪怕后来加了忽略规则,Git还是会继续追踪它们。
接下来给你两种解决方案,分情况使用:
一、正确的.gitignore规则写法
如果你想忽略所有名称包含_data的文件夹及其内部所有文件、子文件夹,可以用这条规则:
**/*_data/**
或者更精准一点,如果你只想匹配以_data结尾的文件夹(比如example_data,而不是data_example),用你原来的规则其实也没问题:
**/*_data/
这条规则的含义:
**/表示匹配任意层级的目录*_data/表示匹配名称以_data结尾的文件夹(末尾的/确保只匹配文件夹,不会误匹配同名文件)
二、处理已被Git追踪的文件
如果之前已经把这些_data文件夹里的文件提交到Git了,光改.gitignore没用,得先把它们从Git的追踪列表里移除(不会删除本地文件,放心操作):
- 执行命令清除Git缓存:
git rm -r --cached .
- 重新添加所有文件(此时
.gitignore的规则会生效,被忽略的文件不会被重新添加):
git add .
- 提交这个更改:
git commit -m "Update .gitignore to exclude *_data folders"
验证规则是否生效
你可以用这条命令测试规则是否正确匹配到了目标文件:
git check-ignore -v /program/example_data/code/some_file.py
如果输出里显示你的.gitignore规则,就说明规则已经生效了。
内容的提问来源于stack exchange,提问作者Bonni
相关产品推荐
相关产品推荐

