.gitignore 不起效?或许是字符编码在搞鬼!
大约 1 分钟
[血泪教训]如果你的 .gitignore 出现了问题,请尝试本文的检查流程。
背景
昨天在搭建本网站时,Git 爆出了 10K+ 更改。我检查发现已经把 node_modules
等加入了 .gitignore
中,而这些文件却都被标记为 Untracked 状态;更迷惑的是 VS Code 却还建议我将 node_modules
加入其中。
VS Code 给出的提示信息
Git 仓库“...”中存在大量活动更改,将仅启用部分 Git 功能。
是否要将“node_modules”添加到 .gitignore?
花费大量时间反复排查,最后发现是编码问题。
解决
通过 gitignore - Git ignore files still listed in untracked list - Stack Overflow,我发现我此处的 .gitignore
文件居然是 UTF-16 LE 编码。更改为 UTF-8 编码后,问题立即解决了。
追溯
我的大部分环境默认编码向来是 UTF-8,之所以发生这样的问题,是因为我的 .gitignore 文件是通过 PowerShell 直接建立的:
echo 'node_modules' >> .gitignore
echo '.temp' >> .gitignore
echo '.cache' >> .gitignore
我并不能确定 PowerShell 默认编码设置为 UTF-16 LE 是否是我的个人问题。根据下面这些问答,这似乎是普遍情况。