【发布时间】:2014-08-14 16:36:53
【问题描述】:
问题:在本地保存文件更改后,Git 将整个 C# 文件解释为已修改。这表明行结尾已更改,即使它们已作为 CRLF 结尾签出并使用 CRLF 行结尾保存在本地。
我正在从事一个有多个贡献者的工作的 Visual Studio 项目。我正在使用 Visual Studio 2012。在过去的 2 天里,我和另一位同事在从我们的公司 Stash 站点克隆了 repo 后遇到了上述问题。我们无法提交更改,因为 Git 指示整个文件已更改,并且我们的某些文件有数千行长。以下是有关症状的更多背景信息:
- 问题仅出现在部分文件中,并非全部。
- 此问题并非特定于 Visual Studio。我在 IntelliJ 和 Notepad++ 中编辑了文件并遇到了同样的问题
- 修改文件后,我很难放弃更改并从 repo 中签出文件。我尝试执行几个命令,这些命令应该重置我的本地存储库。有时他们工作,我与原点保持一致,有时他们没有。唯一一致的解决方案是签出一个新分支,在那里提交更改,然后切换回目标分支。我尝试了以下方法来丢弃更改:
git checkout --
git reset --hard
git reset HEAD
git stash
以下是我为尝试解决此问题而采取的步骤列表:
- 行结束规范化,如文档 here
- 将我的 git 配置更改为
autocrlf=true和autocrlf=false.这已记录在 here。问题仍然存在于两种设置中 - 更改项目中的 .gitattributes 设置。以下是我目前的设置,符合上面链接中给出的示例
* text=auto
*.cs text
- 卸载并重新安装 Git(两次)
到目前为止,我所做的一切都没有解决这个问题。我的预感是它与 .gitattributes 文件中的设置有关。但是,包括该项目的主要开发人员在内的其他人在克隆存储库时都没有遇到过这些问题。我将不胜感激任何建议。谢谢!
【问题讨论】:
-
您找到解决方案了吗?我在 VS 中提交,我在 Linux 中获得待处理的更改,反之亦然。让我想杀人。
标签: git visual-studio visual-studio-2012 github