你说你正在使用prettier来格式化文件:我建议你在那里查找。它可能会修剪尾随的空格。它可能会在文件末尾添加所需的尾随换行符,以满足git的要求。没有适当的diff或屏幕截图,我只能猜测。
我使用一个.editorconfig文件,并像下面的条目一样保护包含尾随空格的语法的文件。第二个条目是另一个示例,其中prettier格式可能会引起问题。
[*.md]
trim_trailing_whitespace = false
[{*.yml,*.yaml,package.json}]
indent_style = space
indent_size = 2
我认为Prettier(像大多数工具一样)尊重editorconfig,并且可以通过插件在vscode中使用。由于您要同时格式化许多代码库,我不确定哪些文件适用于何时。
接下来,我会查看您的vscode设置。这是一个部分的settings.json
,它与上面的示例具有相同的作用。几乎每个设置都在界面中有对应的选项。查找每个设置或搜索“命令面板”以快速找到它们。
{
"files.trimTrailingWhitespace": true,
"files.insertFinalNewline": true,
"[plaintext]": {
"files.insertFinalNewline": false
},
"[markdown]": {
"files.trimTrailingWhitespace": false
}
}
这些VS Code设置对我很重要,可以避免像你所遇到的那样出现意外问题。
最后,请检查每个存储库根目录中的.gitattributes文件。它们将按项目为基础覆盖全局git设置。对我而言,重要的条目包括:
* text=auto
LICENSE.txt eol=crlf
*.bat eol=crlf
*.cmd eol=crlf
*.ps1 eol=lf
*.sh eol=lf
*.rtf -text
你可以通过告诉git如何处理来避免这些问题。就我个人而言,我的存储库中有来自不同平台的PDF文件也存在类似问题。这会在git本身中创建一些问题(文件被标记为已修改,但更改无法被丢弃)。
git diff
应该为您列出差异。输出是什么? - Romain Valeri