刚刚安装了带有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并说要忽略空格时,它没有显示出任何差异。但我想了解为什么这是必要的。
这里真正比较的是什么?
答案 0 :(得分:5)
这是Egit中的一个已知错误。 https://bugs.eclipse.org/bugs/show_bug.cgi?id=342372
即使在Egit 3.4(计划于2014年6月),也不会修复。 Robin Stocker在上述错误的副本中给出了这个建议:
在此实施之前,我建议使用此设置:
对于每个Eclipse项目,请转到属性>资源并将“新文本文件行分隔符”更改为其他:Unix。提交结果 .settings / org.eclipse.core.runtime.prefs文件。
- 醇>
不要为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的文件菜单下,有一个:“将行转换分隔符转换为”。另请注意,单个项目和工作区设置中都有行结束设置。
对于项目:右键单击 - >特性 - >资源
对于工作区:窗口 - >偏好 - >一般 - >工作区