Visual Studio Code显示文件已修改,但实际上并没有更改

4
我遇到了和这里相同的问题: enter image description here Git在Visual Studio Code中说文件已修改,即使没有更改 一大堆文件在源代码控制下显示为已修改,但它们的内容是相同的。我运行了下面推荐的3个命令,但没有帮助...
git config core.filemode false  
git config --global core.filemode false
git config --global core.autocrlf false

1
git diff 应该为您列出差异。输出是什么? - Romain Valeri
它显示 $ git diff diff --git a/README.md b/README.md 索引 0ca446a..5be1037 100644 --- a/README.md +++ b/README.md - Extelliqent
我把文件夹名从b改成了a,但是内容还是一样的。我把所有的代码仓库都放在叫做b的文件夹下。 - Extelliqent
3个回答

1
你说你正在使用prettier来格式化文件:我建议你在那里查找。它可能会修剪尾随的空格。它可能会在文件末尾添加所需的尾随换行符,以满足git的要求。没有适当的diff或屏幕截图,我只能猜测。
我使用一个.editorconfig文件,并像下面的条目一样保护包含尾随空格的语法的文件。第二个条目是另一个示例,其中prettier格式可能会引起问题。
[*.md]
trim_trailing_whitespace = false

# The indent size used in the `package.json` file cannot be changed
# https://github.com/npm/npm/pull/3180#issuecomment-16336516
[{*.yml,*.yaml,package.json}]
indent_style = space
indent_size = 2

我认为Prettier(像大多数工具一样)尊重editorconfig,并且可以通过插件在vscode中使用。由于您要同时格式化许多代码库,我不确定哪些文件适用于何时。

接下来,我会查看您的vscode设置。这是一个部分的settings.json,它与上面的示例具有相同的作用。几乎每个设置都在界面中有对应的选项。查找每个设置或搜索“命令面板”以快速找到它们。

// Place your settings in this file to overwrite default and user settings.
{
  "files.trimTrailingWhitespace": true,
  "files.insertFinalNewline": true,
  "[plaintext]": {
    "files.insertFinalNewline": false
  },
  "[markdown]": {
    "files.trimTrailingWhitespace": false
  }
}

这些VS Code设置对我很重要,可以避免像你所遇到的那样出现意外问题。
最后,请检查每个存储库根目录中的.gitattributes文件。它们将按项目为基础覆盖全局git设置。对我而言,重要的条目包括:
# Auto detect text files and perform LF normalization
* text=auto

# Special files
LICENSE.txt eol=crlf

# Reasonable Defaults
*.bat eol=crlf
*.cmd eol=crlf
*.ps1 eol=lf
*.sh eol=lf
*.rtf -text

你可以通过告诉git如何处理来避免这些问题。就我个人而言,我的存储库中有来自不同平台的PDF文件也存在类似问题。这会在git本身中创建一些问题(文件被标记为已修改,但更改无法被丢弃)。

1

我建议您检查 Visual Studio Code 的自动保存功能。


或者可能是 Git 分支在此之前被清空了。 - kingpanda419
我没有启用自动保存... 分支也没有被清空。 - Extelliqent

0

我刚刚删除并下载了prettier格式化工具,然后在git扩展中出现的问题和更改就消失了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接