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

时间:2014-08-14 16:36:53

标签: git visual-studio visual-studio-2012 github

问题:在本地保存文件更改后,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

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

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

    * text=auto
    *.cs text

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

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

1 个答案:

答案 0 :(得分:7)

我遇到了同样的问题并将该行注释掉了

* text=auto
<。>在.gitattributes。

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

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