EGit Compare显示所有行都已更改

时间:2013-12-30 17:13:01

标签: egit

刚刚安装了带有EGit的Eclipse 4.3(Kepler)(我更新为EGit 3.2.201312181205-r)和Git for Windows。我在现有Eclipse工作区下的Git for Windows Bash shell中克隆了一个存储库,然后在Eclipse中将其作为项目导入。但是,如果我右键单击我没有更改的文件,请选择Compare With> HEAD Revision,它显示所有行不同。

在Git for Windows bash shell中,文件上的git diff没有显示任何内容。在Git bash中对文件运行od -c表明它具有Windows样式的行结尾。

当我进入Eclipse偏好的Compare / Patch并说要忽略空格时,它没有显示出任何差异。但我想了解为什么这是必要的。

这里真正比较的是什么?

1 个答案:

答案 0 :(得分:5)

这是Egit中的一个已知错误。 https://bugs.eclipse.org/bugs/show_bug.cgi?id=342372

即使在Egit 3.4(计划于2014年6月),也不会修复。 Robin Stocker在上述错误的副本中给出了这个建议:

  

在此实施之前,我建议使用此设置:

     
      
  1. 对于每个Eclipse项目,请转到属性>资源并将“新文本文件行分隔符”更改为其他:Unix。提交结果   .settings / org.eclipse.core.runtime.prefs文件。

  2.   
  3. 不要为Git配置任何.gitattributes或“core.autocrlf”。这意味着文件在工作中将具有相同的行结尾   目录在存储库中。 Git和EGit不会转换任何文件   内容。

  4.         

    使用1.,在Eclipse中创建的所有新文件都是正确的   (LF)行结尾,即使是在Windows上由用户创建的。

         

    对于已使用CRLF存储在您的存储库中的文件,您可以修复   他们并提交结果。我建议使用dos2unix或fromdos   命令行。

但据报道,Egit在导入项目时会忽略这些设置。 https://bugs.eclipse.org/bugs/show_bug.cgi?id=421364

所以看起来所有开发人员都需要自己查看行结尾。但至少你不需要任何其他工具来解决这个问题。在Eclipse的文件菜单下,有一个:“将行转换分隔符转换为”。另请注意,单个项目和工作区设置中都有行结束设置。

对于项目:右键单击 - >特性 - >资源

对于工作区:窗口 - >偏好 - >一般 - >工作区