.gitignore中两个白名单嵌套目录行为不一致问题求助
问题原因
Git 不会遍历已经被标记为忽略的父目录,因此如果要为深层子目录添加白名单,必须先将所有上层父目录依次取消忽略。
你配置中第一条规则/*会忽略根目录下所有文件和文件夹,.config目录本身处于被忽略状态,Git 不会进入该目录扫描内部内容,因此你写的!/.config/i3/规则完全不会生效。.vim/autoload能正常生效是因为该路径的父目录.vim已经被取消忽略,或是该目录下已有文件被 Git 提前跟踪(Git 忽略规则对已跟踪文件不生效)。
修复方案
调整你的.gitignore配置,先取消.config目录本身的忽略,再单独忽略.config下除i3之外的内容即可,参考完整配置如下:
/* !/Scripts/ !/.static/ # 先取消.config根目录的忽略 !/.config/ # 忽略.config下所有默认内容 /.config/* # 再单独把i3目录加入白名单 !/.config/i3/ # 补全.vim相关规则避免后续出现异常 !/.vim/ /.vim/* !/.vim/autoload/ !.bashrc_extension !.vimrc
修改后执行git add .config/i3/即可将对应目录纳入跟踪。
内容的提问来源于stack exchange,提问作者marowl
相关产品推荐
相关产品推荐

