我正在使用 Eclipse Juno 与 EGit 2.0 ,我遇到以下问题:
我刚刚使用EGit克隆了一个相当大的项目,我没有编辑任何文件,我有一些文件需要提交。如果我使用git status
检查存储库状态,我将这些文件视为未分阶段的修改。
如果我在eclipse中Compare With -> HEAD Revision
执行任何这些文件,我认为没有任何区别。但是,当我git diff
时,我会看到这样的事情:
diff --git a/PortalPlatform/WebContent/WEB-INF/fragment/someFile.jsp b/PortalPlatform/WebContent/WEB-INF/fragment/someFile.jsp
index f883dba..811ad83 100644
--- a/PortalPlatform/WebContent/WEB-INF/fragment/someFile.jsp
+++ b/PortalPlatform/WebContent/WEB-INF/fragment/someFile.jsp
@@ -34,7 +34,7 @@
</c:forEach>
</select>
</c:if>
- <div><a href="reprintLastReceipt"><fmt:message key="label.link" /></a></div>
+ <div><a href="reprintLastReceipt"><fmt:message key="label.link" /></a></div>^M
</fieldset>
<div class="widgetBut">
<a class="btn primary submit" href="#"><span><fmt:message key="button.reprint" /></span></a>
它没有影响特定的文件类型,我遇到了.java,.jsp,.css,.properties和.xml文件的问题。
为什么我只在某些文件中的换行符中获得这些更改?我该如何解决?
提前致谢!
答案 0 :(得分:2)
自EGit 2.0起,根据bug 301775,EGit支持core.autocrlf
。
用于在创建存储库时将autocrlf设置为false,但bug 382067和fix 6316负责处理,这意味着它依赖于本地Git安装中的本地或全局设置(像msysgit) 正如我之前所说,should always be set to false。
如果您需要对某些文件的EOL进行细粒度控制,use core.eol
attribute。
答案 1 :(得分:1)
有点老问题,但仍然有人可能有问题(就像我一样)。
EGit文档&gt; EGit用户指南&gt;可以找到here状态的<使用入门:
指出系统范围的配置
如果您使用Git for Windows作为EGit的伴侣,请确保EGit知道Git的安装位置,以便它可以找到“系统范围设置”,例如如何设置core.autocrlf。转到设置并在Team&gt; Git&gt; Configuration下查看,然后在System Settings选项卡下查看。
如果您在安装Git for Windows时选择了其中一个选项以使用命令行提示符中的Git,那么系统范围设置的位置将填入路径并且一切正常。如果没有,请使用“浏览”按钮找到Git的安装位置,例如: C:\ Program Files(x86)\ Git。
此建议也适用于其他Git包装的用户,例如Git在Cygwin或TortoiseGit下。
非Windows用户理论上应检查此设置,但系统范围的设置通常不在非Windows平台上使用。
正如我们所看到的,EGit会查找git配置文件以了解'autocrlf'是如何精确配置的。但是在Windows下,它似乎找不到所有这些。
此命令将向我们显示配置git使用的内容:
git config --list --show-origin
我们可以在 Windows&gt;中看到Eclipse中考虑了git的配置。偏好&gt;团队&gt; Git&gt;构造即可。这是一个问题:Eclipse没有看到位于 C:\ ProgramData \ Git 文件夹中的配置文件,其中定义了'autocrlf'选项。
我最终重复了'autocrlf'值(真实 - 在我的情况下)
位于主目录中的用户'.gitconfig'文件中的[芯]
autocrlf = true
,并且每件事都运行良好。