Visual Studio 团队资源管理器显示的更改实际上并不存在



我一直在 Visual Studio 2013 中尝试 git-svn 和 git 集成。我遇到的一个问题是Visual studio将许多文件显示为"包含的更改"(即"修改的"文件(的一部分,而实际上它们没有更改。

乍一看,研究表明,当存在行尾问题时会出现类似的问题,但:

A( 控制台中的 Git 运行良好(即 git 状态显示不存在任何更改(。

B( Git 行结尾规范化已被关闭(通过 .gitattributes 文件中的"git config --global core.autocrlf false"和"* text=off line"(

有什么想法吗?

首先:

  • 使用最新的 Git 2.13.2 版本(除非 Visual Studio 2013 仍然基于 libgit2,但即使如此,使用 Git 2.13.2 检查问题是否仍然存在(
  • 通过触发重整化,确保当前本地存储库中不涉及 EOL:

    $ rm .git/index     # Remove the index to re-scan the working directory
    $ git add .
    $ git status        # Check if files are still "modified"
    

其次,检查这些"隐形"变化的性质:

git diff --word-diff-regex=.
# or
git -c color.diff.whitespace="red reverse" diff -R -- afile

第三,检查这是否是权限问题(您可以先取消设置其他core.filemode设置(:

git config core.filemode false
# renormalize as shown above.

从@Vonc答案中,我已经检查并发现即使VS 2015也仍在使用libgit2,您可以在" %PROGRAMFILES(x86(%\Microsoft Visual Studio 14.0\Web\External\git"文件夹中确认。

要确认文件修改在 Git-SCM 中是否真实,只需使用标准 Git 并运行以下命令即可查看更改。

git diff --name-status

您很可能不会看到任何变化。

顺便说一句,我发现VS 2017已切换为使用标准Git-SCM。如果您使用此版本打开,它将没有任何问题。

最新更新