Git 差异没有任何意义
Git diff does not make any sense
当我 运行 git diff
在我修改过的 PHP 文件上时,它显示我修改了错误的行,其他行是 'unmodified' (没有更改),即使我修改了其他行。
一个例子:
这是我对文档所做的更改:
它只出现在某些文件上,在其他情况下,它有时会添加其他行,但不会标记适当的行删除。在其他情况下,它只会将更改附加到文件末尾,而不会将其标记为添加。
在 SourceTree 上,同样的差异似乎也没有任何意义:
仅供参考:这些文件最初是从 Linux 服务器下载的。
当您的文件使用 windows 换行编码时,有时会发生这种情况,在 git 上,它使用 unix 换行编码,这就是您可能会收到此错误的原因,您必须配置您的unix
的行结尾
编辑:
这个 link here 可能会有用。就像他在这个post中所说的那样,您可以尝试取决于您的编辑器来做:
- For Vim users, you’re all set out of the box! Just don’t change your
eol setting. For Emacs users, add (setq require-final-newline t) to
your .emacs or .emacs.d/init.el file.
- For TextMate users, you can install the Avian Missing Bundle and add TM_STRIP_WHITESPACE_ON_SAVE = true to your .tm_properties file.
- For Sublime users, set the ensure_newline_at_eof_on_save option to true.
- For RubyMine, set “Ensure line feed at file end on Save” under “Editor.”
我在检查了有问题的文件后找到了解决方案。
出现问题的文件似乎只有经典的 Macintosh CR
行尾 (EOL) 格式。将此与 Window 的 CR+LF
或 UNIX(及其衍生产品,包括 OS X)LF
进行对比。将文件转换为 Windows/UNIX EOL 格式,提交修复的 EOL 文件解决了问题。
使用测试 Git 存储库对其进行测试证明我的怀疑是正确的。
可能恰好是Git跟踪文件变化的方式,只支持CR
结合LF
(CR+LF
)而不支持CR
单独(如经典 Mac 使用的那样)。
当我 运行 git diff
在我修改过的 PHP 文件上时,它显示我修改了错误的行,其他行是 'unmodified' (没有更改),即使我修改了其他行。
一个例子:
这是我对文档所做的更改:
它只出现在某些文件上,在其他情况下,它有时会添加其他行,但不会标记适当的行删除。在其他情况下,它只会将更改附加到文件末尾,而不会将其标记为添加。
在 SourceTree 上,同样的差异似乎也没有任何意义:
仅供参考:这些文件最初是从 Linux 服务器下载的。
当您的文件使用 windows 换行编码时,有时会发生这种情况,在 git 上,它使用 unix 换行编码,这就是您可能会收到此错误的原因,您必须配置您的unix
的行结尾编辑:
这个 link here 可能会有用。就像他在这个post中所说的那样,您可以尝试取决于您的编辑器来做:
- For Vim users, you’re all set out of the box! Just don’t change your eol setting. For Emacs users, add (setq require-final-newline t) to your .emacs or .emacs.d/init.el file.
- For TextMate users, you can install the Avian Missing Bundle and add TM_STRIP_WHITESPACE_ON_SAVE = true to your .tm_properties file.
- For Sublime users, set the ensure_newline_at_eof_on_save option to true.
- For RubyMine, set “Ensure line feed at file end on Save” under “Editor.”
我在检查了有问题的文件后找到了解决方案。
出现问题的文件似乎只有经典的 Macintosh CR
行尾 (EOL) 格式。将此与 Window 的 CR+LF
或 UNIX(及其衍生产品,包括 OS X)LF
进行对比。将文件转换为 Windows/UNIX EOL 格式,提交修复的 EOL 文件解决了问题。
使用测试 Git 存储库对其进行测试证明我的怀疑是正确的。
可能恰好是Git跟踪文件变化的方式,只支持CR
结合LF
(CR+LF
)而不支持CR
单独(如经典 Mac 使用的那样)。