Gitignore规则异常:parent目录下file.ts被误排除的原因咨询
Git忽略规则异常:为什么
!file.ts无法排除parent目录下的file.ts? 问题场景
你的目录结构:
project ├── .gitignore └── parent └── file.ts
.gitignore文件内容:
parent/* !file.ts
目前Git会忽略parent目录下的所有内容,包括file.ts,问题出在这两个核心点:
原因分析
- 路径匹配的相对性错误:.gitignore里的规则是相对于它所在的目录(也就是
project根目录)来匹配的。你写的!file.ts是在尝试排除根目录下的file.ts,而非parent子目录里的目标文件,这条规则根本没命中要排除的对象。 - 忽略规则的作用范围限制:
parent/*的作用是忽略parent目录下的所有条目,但要排除其中的特定文件,必须写出该文件相对于根目录的完整路径,否则Git无法定位到需要豁免的文件。
修正方案
把.gitignore改成下面这样,明确指定要排除的文件路径即可:
parent/* !parent/file.ts
内容的提问来源于stack exchange,提问作者Mansur Ali Koroglu
相关产品推荐
相关产品推荐

