EGit Compare显示所有行都已更改

jfk*_*ein 7 egit

刚刚安装了Eclipse 4.3(Kepler),它带有EGit(我更新到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没有显示任何内容.od -c在Git bash中运行该文件显示它具有Windows样式的行结尾.

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

这里真正的比较是什么?

mik*_*ike 6

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

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

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

  1. 对于每个Eclipse项目,转到Properties> Resource并将"New text file line delimiter"更改为Other:Unix.提交生成的.settings/org.eclipse.core.runtime.prefs文件.

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

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

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

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

所以看起来所有开发人员都需要自己检查行结尾.但至少你不需要任何其他工具来解决这个问题.在Eclipse 的File菜单下有一个:"Convert Line Delimiters To".另请注意,单个项目和工作区设置中都有行结束设置.

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

对于工作区:窗口 - >首选项 - >常规 - >工作区