在Git仓库中工作时,VS2015中的撤销出现了一个奇怪的问题。例如改变web.config并且如果我撤消更改,则内容将更改为未修改的版本。但是,即使文件中没有任何更改,该文件仍会显示为已更改的文件。
选择屏幕广告:https://jnus.tinytake.com/sf/MTIwNjg0OF80NjMzMDc1
使用以下配置: 的.gitconfig
[core]
fscache = true
preloadindex = true
autocrlf = true
.gitattribute
* text=auto
知道为什么会这样。我怀疑行结束(目前正在使用CRLF),但无法确认这一点。
更新: 我尝试使用以下别名将行结尾标准化,没有任何运气。
git rm --cached -r . && git reset --hard && git commit -a -m 'Normalize CRLF' -n
更新2:似乎只影响基于XML的文件,如csproj,config等。
答案 0 :(得分:0)
我建议检查一下git说的话:
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团队。