为什么 Git 忽略这个不在 .gitignore 中的目录?

Why is Git ignoring this directory that is not in .gitignore?

我遇到了一个奇怪的问题,一个目录即使不在 .gitignore 中也被忽略了。可以肯定的是,我什至删除了 .gitignore 但这并没有什么不同。

基本上我有一个目录“CliClient”,经过多次重构后,它被移到了另一个目录下。现在我注意到当这个目录存在时,git 看不到它,也不能将它添加到索引中,也不能删除它。

见下文:

正在检查目录是否存在:

$ ll CliClient/
total 8.0K
drwxr-xr-x  2 4.0K Nov  5 12:31 .
drwxr-xr-x 11 4.0K Nov  5 12:31 ..

只是为了测试,尝试添加目录:

$ git add CliClient/

不,它没有做到:

$ git status
On branch lerna_migration
Your branch is up to date with 'origin/lerna_migration'.

nothing to commit, working tree clean

所以它可能已经添加了?所以删除它:

$ git rm -r CliClient/
fatal: pathspec 'CliClient/' did not match any files

所以它就在那里,不在 .gitignore 中,不在索引中,但对 git 不可见。我尝试了很多方法,包括 git check-ignore,但没有用。

知道可能是什么原因吗?

Git 仅跟踪文件。目录不作为“真实”实体进行跟踪,而只是在文件位置的意义上进行跟踪。由于目录是空的,git 没有任何东西可以跟踪,所以 git add 调用不会做任何事情。