Git diff没有任何意义

时间:2015-04-03 08:42:53

标签: php git netbeans bitbucket

当我在我修改的PHP文件上运行git diff时,它会显示正在修改的错误行,其他行未经修改' (没有变化),即使我修改了其他行。

一个例子: git diff result

这是我对该文件所做的更改: enter image description here

它只发生在某些文件上,在其他情况下,它有时会添加其他行,但它不会标记相应的行删除。在其他情况下,它只会将更改附加到文件的末尾,而不会将其标记为添加。

在SourceTree上,似乎同样的差异也没有任何意义: enter image description here

仅供参考:文件最初是从Linux服务器上下载的。

2 个答案:

答案 0 :(得分:0)

有时当你的文件使用windows new line进行编码时会发生这种情况,在git上使用unix new line进行编码,这就是为什么你的migth得到这个错误,你必须将你的行结尾配置为unix

编辑:

此链接here可能很有用。就像他在这篇文章中所说,你可以尝试依赖你的编辑来做:

  
      
  • 对于Vim用户,你们都是开箱即用的!只是不要改变你的   eol设置。对于Emacs用户,添加(setq require-final-newline t)   你的.emacs或.emacs.d / init.el文件。   
        
    • 对于TextMate用户,您可以安装Avian Missing Bundle并将TM_STRIP_WHITESPACE_ON_SAVE = true添加到.tm_properties文件中。
    •   
  •   
  • 对于Sublime用户,请将ensure_newline_at_eof_on_save选项设置为true。
  •   
  • 对于RubyMine,请在“编辑器”下设置“在保存时确保文件末尾的换行”。
  •   

答案 1 :(得分:0)

在检查了违规文件后,我找到了解决方案。

似乎提出问题的文件只有经典的Macintosh CR行尾(EOL)格式。将此与Window的CR+LF或UNIX(以及衍生产品,包括OS X)LF进行对比。将文件转换为Windows / UNIX EOL格式,提交修复的EOL文件可以解决问题。

使用测试Git存储库测试它证明了我的怀疑。

可能恰好是Git跟踪文件更改的方式,仅支持CRLFCR+LF)而不是CR一起支持(就像经典Mac一样)使用)。