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
开始工作,但没有帮助。
其他一些目录也有这个问题。
更新:
.gitignore
位置:D:\Git\.gitignore
.gitignore
内容:https://i.stack.imgur.com/MTwql.png
- Git 根目录:
D:\Git
.vscode/
位置:D:\Git\.vscode
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,所以我不确定它们可能是什么。
我将 .vscode/
添加到 .gitignore
但我仍然可以在 git status
中看到它作为未跟踪。我之前没有提交过,所以不是问题的关键。
如果我尝试按 git rm --cached .vscode
从索引中删除它,我会收到错误消息:fatal: pathspec '.vscode' did not match any files
.
我试图删除并重新创建 .vscode/
以强制 .gitignore
开始工作,但没有帮助。
其他一些目录也有这个问题。
更新:
.gitignore
位置:D:\Git\.gitignore
.gitignore
内容:https://i.stack.imgur.com/MTwql.png- Git 根目录:
D:\Git
.vscode/
位置:D:\Git\.vscode
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,所以我不确定它们可能是什么。