为什么使用"!"符号,.gitignore仍然无法跟踪某个文件?

3
我在我的.gitignore文件中有以下内容:
data/
!data/data_file.csv

尽管我在检查忽略规则时发现 data_file.csv 没有被跟踪,而且我得到了以下的信息:
 git check-ignore -v data/data_file.csv  
.gitignore:2:data/      data/data_file.csv

我已经尝试过。
git rm -r -f --cached .
git add -A
git commit -m "Some commit message"

有人能解释为什么会这样,以及如何使文件被追踪吗?

1
一旦你忽略了一个目录,那么就不可能再取消忽略其中的某些内容。你可以尝试使用data/*代替data/,因为这样你不会忽略整个目录,而是它的所有内容。在Stack Overflow上有很多关于这个问题的讨论。 - undefined
1个回答

3
你不想忽略整个文件夹,只是它的内容。
这样可以让你取消忽略你选择的内容项。
data/*
!data/data_file.csv

2
在这种特殊情况下,不需要使用前导斜杠。在/data/这种情况下,建议使用前导斜杠,但/data/*data/*是等效的。同样,!/data/data_file.csv!data/data_file.csv也是等效的。请参阅https://git-scm.com/docs/gitignore#_pattern_format中的文档:“*如果模式的开头或中间(或两者都有)有**分隔符**,那么该模式相对于特定.gitignore文件的目录级别*”——强调是我的。 - undefined

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接