无法在Visual Studio项目中规范化Git的行结尾

Eri*_*sey 16 git github visual-studio visual-studio-2012

问题:在本地保存文件更改后,Git将整个C#文件解释为已修改.它表示行结束已更改,即使它们已作为CRLF结尾检出并在本地保存CRLF行结尾.

我正在我的工作中开发一个Visual Studio项目,该项目有多个贡献者.我正在使用Visual Studio 2012.在过去的两天里,我和另一位同事在从我们的公司Stash站点克隆回购后遇到了上述问题.我们不能提交我们的更改,因为Git表示整个文件已经更改,我们的一些文件长达数千行.以下是有关症状的更多背景信息:

  • 问题只出现在某些文件中,而不是全部.
  • 问题不是Visual Studio特有的.我在IntelliJ和Notepad ++中编辑了文件并遇到了同样的问题
  • 文件修改后,我很难丢弃更改并从repo中检出文件.我试过执行几个应该重置我的本地仓库的命令.有时他们工作,我与原点保持一致,有时他们没有.唯一一致的解决方案是签出新分支,在那里提交更改,然后切换回目标分支.我尝试了以下方法来放弃更改:

    git checkout -- 
    git reset --hard
    git reset HEAD
    git stash

以下列出了我尝试解决问题的步骤:

  • 行结束标准化,如此处所述
  • 将我的git配置更改为autocrlf=true,autocrlf=false.这将在此处记录.问题仍然存在于两种情况下
  • 更改项目中的.gitattributes设置.以下是我当前的设置,符合上面链接中给出的示例

    * text=auto
    *.cs text

  • 卸载并重新安装Git(两次)

到目前为止,我所做的一切都没有解决问题.我的预感是它与.gitattributes文件中的设置有关.但是,在克隆回购时,没有其他人(包括项目的主要开发人员)遇到过这些问题.我非常感谢任何建议.谢谢!

小智 7

我有同样的问题,并注释掉了这条线

* text=auto
Run Code Online (Sandbox Code Playgroud)

在.gitattributes中.

这解决了我的问题.希望这可以帮助您或其他任何有同样问题的人.

根据我的理解,该* text=auto行应该有助于行结尾,但由于某种原因,一群人运行Windows似乎有问题.