修复git中的换行问题

时间:2011-02-14 17:15:11

标签: git diff

我在提交期间意外地将我的CRLF替换为LF行结尾。 文件历史记录现在如下所示:

+---------+-----------+
| Version | Line Feed |
+---------+-----------+
|    4    | CRLF      |
|    3    | CRLF      | << changed all LFs back to CRLFs
|    2    | LF        | << mistake introduced here
|    1    | CRLF      |
+---------+-----------+

问题是此文件现在被标识为二进制文件(即使在我手动更正了版本3中的问题之后)。这导致diffblame和其他工具停止在此文本文件上按预期工作。

我尝试在*.xml crlf diff中设置./git/info/attributes但它仅适用于diff而不适用于blame,同时也怀疑我可能会遇到合并冲突问题。提交此文件时,它还会向我发出LF will be replaced by CRLF警告,表示属性设置不足。

这是在设置了autocrlf = true的Windows操作系统上。

如何让git再次将其识别为文本文件?

1 个答案:

答案 0 :(得分:4)

不推荐使用'crlf'属性。它已被'text'和'eol'属性所取代,但您很可能不需要使用'eol'属性。

Git从未打算在内部存储CRLF行结尾,因此这可能需要历史记录重写才能完全修复。改变行结尾的提交将是最早的提交,因为它认为整个文件被重写(它是)。

尝试阻止这种情况再次发生的一种方法是将* text=auto添加到.gitattributes并将该文件提交给回购。

有关此内容的更多信息,请访问gitattributes man page