【问题标题】:git - Visual studio team explorer is showing changes that are not actually theregit - Visual Studio 团队资源管理器正在显示实际不存在的更改
【发布时间】:2017-12-05 01:00:13
【问题描述】:

我已经在 Visual Studio 2013 中试验了 git-svn 和 git 集成很短的时间。我遇到的一个问题是,Visual Studio 将许多文件显示为“包含的更改”(即“修改的”文件)的一部分,而实际上它们没有任何更改。

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

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

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

有什么想法吗?

【问题讨论】:

    标签: git visual-studio svn


    【解决方案1】:

    从@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。如果你使用这个版本打开,它不会有任何问题。

    【讨论】:

      【解决方案2】:

      第一:

      • 使用最新的 2.13.2 版本的 Git(除非 Visual Studio 2013 仍然基于 libgit2,但即便如此,使用 Git 2.13.2 检查命令行中问题是否仍然存在)
      • 通过triggering a renormalization确保 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
      

      第三,检查这是否是权限问题(可以unset other core.filemode settings first):

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

      【讨论】:

        猜你喜欢
        • 2011-10-11
        • 1970-01-01
        • 2012-03-03
        • 2019-04-17
        • 1970-01-01
        • 2020-03-30
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多