Git 将忽略的目录显示为未跟踪

Git shows ignored directory as untracked

我将 .vscode/ 添加到 .gitignore 但我仍然可以在 git status 中看到它作为未跟踪。我之前没有提交过,所以不是问题的关键。

如果我尝试按 git rm --cached .vscode 从索引中删除它,我会收到错误消息:fatal: pathspec '.vscode' did not match any files.

我试图删除并重新创建 .vscode/ 以强制 .gitignore 开始工作,但没有帮助。

其他一些目录也有这个问题。

更新:

UPD1:

$ git status -uall
On branch opkm-pay-delay
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .vscode/.ropeproject/config.py
        .vscode/.ropeproject/objectdb
        .vscode/settings.json

git 检查忽略的空结果:

Paliyuk-PA@Paliyuk-PA MINGW64 /d/Git (opkm-pay-delay)
$ git check-ignore -v .vscode/.ropeproject/objectdb

Paliyuk-PA@Paliyuk-PA MINGW64 /d/Git (opkm-pay-delay)
$ git check-ignore -v .vscode/settings.json

Paliyuk-PA@Paliyuk-PA MINGW64 /d/Git (opkm-pay-delay)
$ git check-ignore -v .vscode/.ropeproject/config.py

我刚刚将我的 .gitignore 文件移动到另一个目录,在我的 D:\Git 中创建了一个新的空文件,将原始文件的内容复制粘贴到新文件中,出于某种原因,终于成功了!

所以答案是重新创建您的 .gitignore 文件:|

好的,从这里开始:

$ git status -uall
On branch opkm-pay-delay
Untracked files:
  (use "git add <file>..." to include in what will be committed)
        .vscode/.ropeproject/config.py
        .vscode/.ropeproject/objectdb
        .vscode/settings.json

我们知道哪些文件有问题,并由此得知:

Paliyuk-PA@Paliyuk-PA MINGW64 /d/Git (opkm-pay-delay)
$ git check-ignore -v .vscode/.ropeproject/objectdb

[results in no output]

我们知道 .vscode/ 行(链接图像中的第 106 行)没有生效。最后,从,我知道实际问题是什么:

Also i found out that the old (broken) file weights almost twice as much as the new good one while their "text" content is the same.

不能工作的.gitignore文件是用UTF-16编码的(可能是UTF-16-LE,因为Windows)。 Git 不读取此类文件。 Git 期望 .gitignore 内容为 UTF-8。因此,UTF-16 内容的 none 实际上最终 working.

将内容重新复制到新文件显然将 new .gitignore 写成了 UTF-8,以便 Git 可以阅读和理解它。 Windows 可能也有文件转换工具,虽然因为我避免使用 Windows,所以我不确定它们可能是什么。