Git 提交并推入eclipse将整个文件提交为已更改

Git 提交并推入eclipse将整个文件提交为已更改,git,git-commit,git-push,eclipse-oxygen,git-stage,Git,Git Commit,Git Push,Eclipse Oxygen,Git Stage,我已经开始在“EclipseJeeOxygen”中使用Git staging。每次我对一个文件做一个小的更改(修复一个bug),我都必须提交和推送。但在git中,整个文件显示为已更改。为什么会这样?这会混淆在同一存储库中工作的其他人 如何从Eclipse的Git staging视图中提交和推送更改来解决这个问题 非常感谢您的帮助。这是因为文件的EOL格式发生了更改 有不同的EOL(行尾)格式。UNIX使用LF作为换行符,windows使用CRLF,Mac使用不同的东西。体面的文本编辑器可以识别文

我已经开始在“EclipseJeeOxygen”中使用Git staging。每次我对一个文件做一个小的更改(修复一个bug),我都必须提交和推送。但在git中,整个文件显示为已更改。为什么会这样?这会混淆在同一存储库中工作的其他人

如何从Eclipse的Git staging视图中提交和推送更改来解决这个问题


非常感谢您的帮助。

这是因为文件的EOL格式发生了更改

有不同的EOL(行尾)格式。UNIX使用LF作为换行符,windows使用CRLF,Mac使用不同的东西。体面的文本编辑器可以识别文件的格式,并在保存文件时保留该格式(Windows记事本不在体面的文本编辑器列表中。它从历史上就把它们搞得一团糟……为什么?因为除了Windows之外,谁还使用它呢???)。在多操作系统环境下工作,这可能是一个棘手的问题

现在,当您在修订版上(自愿或不自愿)更改给定文件的EOL格式时,对于VCS来说,就像整个文件都更改了一样,这就是您所看到的

Git提供了一些技巧来防止这种情况发生。有一个旧的实现(我想是使用autocrlf)非常混乱,尽管它仍然可用(这可能是因为在背后更改文件的EOL格式而给您带来麻烦的原因)。然后还有另一种尝试,使用属性更好。一般来说,您可以做的最好的事情是告诉git让文件保持原样,不要将这一行添加到
。git/info/attributes

* -text

希望对您有所帮助。

您的意思是
git diff
显示要删除和添加的所有文件行,而不仅仅是修改的行吗?这可能是行结束问题吗?@PetSerAl No.在github中,显示了为提交所做的更改。虽然我只更改了几行,但它显示了在我使用git阶段视图中的提交和推送之后整个文件都发生了更改。我感谢您的帮助,但我没有得到解决问题的具体方法。你能说得更具体点吗。attributes文件夹不在.git/info中。顺便说一句,我正在windows系统上工作。在上面的位置有一个排除文件夹。如果我调整.git/config文件,问题会得到解决吗?.git/info/excludes作为.gitignore系统的一部分工作。。。。所以不,这不是你需要的。如果文件不存在,请随意创建它。