当我在我修改的PHP文件上运行git diff
时,它会显示正在修改的错误行,其他行未经修改' (没有变化),即使我修改了其他行。
一个例子:
这是我对该文件所做的更改:
它只发生在某些文件上,在其他情况下,它有时会添加其他行,但它不会标记相应的行删除。在其他情况下,它只会将更改附加到文件的末尾,而不会将其标记为添加。
在SourceTree上,似乎同样的差异也没有任何意义:
仅供参考:文件最初是从Linux服务器上下载的。
答案 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跟踪文件更改的方式,仅支持CR
与LF
(CR+LF
)而不是CR
一起支持(就像经典Mac一样)使用)。