VS2015,Git和撤消

时间:2016-12-21 11:22:03

标签: git visual-studio-2015

在Git仓库中工作时,VS2015中的撤销出现了一个奇怪的问题。例如改变web.config并且如果我撤消更改,则内容将更改为未修改的版本。但是,即使文件中没有任何更改,该文件仍会显示为已更改的文件。

选择屏幕广告:https://jnus.tinytake.com/sf/MTIwNjg0OF80NjMzMDc1

使用以下配置: 的.gitconfig

[core]
    fscache = true
    preloadindex = true
    autocrlf = true

.gitattribute

* text=auto

知道为什么会这样。我怀疑行结束(目前正在使用CRLF),但无法确认这一点。

git diff的示例: enter image description here

更新: 我尝试使用以下别名将行结尾标准化,没有任何运气。

git rm --cached -r . && git reset --hard && git commit -a -m 'Normalize CRLF' -n

更新2:似乎只影响基于XML的文件,如csproj,co​​nfig等。

2 个答案:

答案 0 :(得分:0)

我建议检查一下git说的话:

  • 使用shell和git status或TortoiseGit,看看你是否同时拥有分阶段版本和非分阶段版本
  • 使用git diff,查看显示为修改的内容

答案 1 :(得分:0)

Ok找到了一个解决方案,用上面提到的.gitattribute在我们的解决方案中修复所有行结尾(准确地说是2.4M结尾)。在此之后,撤消问题就消失了。

$ echo "* text=auto" >>.gitattributes
$ rm .git/index     # Remove the index to force git to
$ git reset         # re-scan the working directory
$ git status        # Show files that will be normalized
$ git add -u
$ git add .gitattributes
$ git commit -m "Introduce end-of-line normalization"

来自Trying to fix line-endings with git filter-branch, but having no luck

这真的是一个PITA,而不是第一次熟悉Windows / Visual Studio上的git团队。