Git配置exclude规则后,.config指定目录未被添加的原因
Git忽略规则不生效的原因及解决办法
问题根源
你配置的.git/info/exclude里,第一行的/*会匹配仓库根目录下所有文件和目录,包括.config目录本身。Git的规则是:如果父目录被标记为忽略,它会直接跳过这个目录,不会再扫描里面的任何内容——哪怕你后面写了取消子目录忽略的规则,也根本没机会触发。
而.bash*和.vim*能被正常添加,是因为它们直接在根目录下,!.bash*和!.vim*直接覆盖了/*的排除规则,所以生效了。
修复方案
修改.git/info/exclude,先把.config目录本身从忽略列表中排除,再指定要包含的子目录:
/* !.config/ !.config/nvim* !.config/qutebrowser/* !.config/htop/* !.config/emacs/* !.config/aqemu/* !.config/dconf/* !.vim* !.bash*
这里的!.config/是关键——它告诉Git不要忽略这个目录,这样Git才会进入目录内部,读取后面针对子目录的规则。
如果之前已经执行过git add .,需要清理Git缓存再重新添加,确保新规则生效:
git rm -r --cached . git add .
内容的提问来源于stack exchange,提问作者Ceus
相关产品推荐
相关产品推荐

