【问题标题】:Git shows ignored directory as untrackedGit将忽略的目录显示为未跟踪
【发布时间】:2021-11-01 00:29:22
【问题描述】:

我将.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 check-ignore 的空结果:

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 文件的拼写是否正确?
  • @user202729,更新了描述。
  • @AntonioPetricca,是的,应该是正确的。添加了一些描述。
  • 使用git status -uall 显示.vscode 中未被跟踪的实际文件。然后,您可以向git check-ignore -v 询问这些路径名,得到更有用的结果。 (现在,这确实看起来像是某种奇怪的错误;也许有更多细节,我们可以找到更多。)

标签: git visual-studio-code version-control gitignore


【解决方案1】:

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

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

【讨论】:

  • 哇,这就像技术说“重启你的电脑”,让它工作。多么令人失望,因为我们永远不会知道到底发生了什么......
  • @joanis ,我仍然保存了损坏的文件,因此如果您愿意,我可以分享它)我还发现旧(损坏)文件的重量几乎是新文件的两倍,而他们的“文本”内容是一样的。看起来它有一些导致问题的字节,但这些字节在文本表示中是“不可见的”。
  • @joanis:看我的回答。文件大小减半就是证明,尽管一旦我看到git check-ignore -v 没有应用该行,我怀疑....
  • @torek 一个更令人满意的答案!我很高兴这件事得到了解决。
【解决方案2】:

好的,从这里开始:

$ 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

[导致无输出]

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

我还发现旧(损坏的)文件的重量几乎是新文件的两倍,而它们的“文本”内容相同。

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

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

【讨论】:

  • 是的,你是对的。它在带有 BOM 的 UTF-16 LE 中。以 UTF-8 重新保存修复了损坏的文件。谢谢:)
猜你喜欢
  • 2013-09-01
  • 2012-06-01
  • 2023-01-05
  • 1970-01-01
  • 2016-01-20
  • 2017-01-16
  • 1970-01-01
  • 2021-09-18
  • 2022-07-06
相关资源
最近更新 更多