我有一个文件夹logs /被忽略:
$$git status -s --ignored logs
!! logs/
但是,当我跑:
git check-ignore -v logs/
我得到空输出,这似乎表明没有什么可以忽略它.
我什么都没上演:
$git status --untracked-files=no
On branch master
nothing to commit (use -u to show untracked files)
那么为什么这个文件夹会被忽略?
$git --version
git version 2.10.2
最佳答案 当忽略是由于忽略目录中的文件而不是目录本身时,就会发生这种情况.我制作了一个日志/目录,并在其中放入了一些内容并获得了相同的结果:
$git status -s --ignored logs
!! logs/
这是我在日志中的内容:
$ls -A logs
foo
这就是它被忽略的原因:
$grep foo .gitignore
foo
但是这里git check-ignore -v没有提及logs / foo:
$git check-ignore -v logs/
为什么
一旦目录为“空”(因为它中的所有文件都被忽略),它就不再对Git感兴趣,因为Git不会在提交中记录目录.但在这种情况下,不是目录本身被忽略;这是git状态的总结,限制了你只看到这里的目录.
因此,当你问Git“为什么是日志/被忽略”时,答案就是,它不会被忽略,它只是被忽略的内容. (我想我们可以说这是git check-ignore中的一个错误.)
怎么看怎么回事
添加-uall(或–untracked = all)以查看实际被忽略的文件:
$git status -s --ignored -uall logs
!! logs/foo
$git check-ignore -v logs/foo
.gitignore:34:logs/foo logs/foo
现在,您可以使用它们(现在不再汇总的)路径找出文件被忽略的原因.
(注意:在剪切和粘贴过程中,我可能已经多次更改了.gitignore内容,这是我零碎的:在不同时间我在.gitignore中有log / foo和foo,这两个都使目录“变空”.因此重复实验可能会略微不同.尽管如此,关键是使用-uall来查找文件名.)