我已经开始在“Eclipse Jee Oxygen”中使用 Git 登台。每次我对文件进行小的更改(修复错误)时,我都必须提交并推送。但在 git 中,显示整个文件已更改。为什么会这样?这让在同一个存储库上工作的其他人感到困惑。
如何解决此问题以仅从 Eclipse 的 Git 暂存视图提交和推送更改?
任何帮助表示赞赏。
我已经开始在“Eclipse Jee Oxygen”中使用 Git 登台。每次我对文件进行小的更改(修复错误)时,我都必须提交并推送。但在 git 中,显示整个文件已更改。为什么会这样?这让在同一个存储库上工作的其他人感到困惑。
如何解决此问题以仅从 Eclipse 的 Git 暂存视图提交和推送更改?
任何帮助表示赞赏。
那是因为文件的 EOL 格式发生了变化。
有不同的 EOL(行尾)格式。UNIX 使用 LF 作为换行符,windows 使用 CRLF,Mac 使用不同的东西。体面的文本编辑器识别文件的格式并在保存文件时保留它(Windows记事本不在体面的文本编辑器列表中。它在历史上把它们搞砸了......为什么?因为除了Windows之外谁使用任何东西??? )。在多操作系统环境中工作,这可能是一个棘手的问题。
现在,当您更改修订版中给定文件的 EOL 格式时(自愿或非自愿),对于 VCS,就像整个文件已更改,这就是您所看到的。
Git 提供了一些技巧来防止这种情况发生。有一个旧的实现(我认为使用 autocrlf)非常混乱,尽管它仍然可用(这可能是通过更改背后文件的 EOL 格式给您带来麻烦的原因)。然后还有另一种使用属性更好的尝试。一般来说,你能做的最好的事情是告诉 git 让文件保持原样,不要弄乱文件的 EOL 格式,方法是将此行添加到.git/info/attributes
:
* -text
希望有帮助。