我在提交期间意外地将我的CRLF替换为LF行结尾。 文件历史记录现在如下所示:
+---------+-----------+
| Version | Line Feed |
+---------+-----------+
| 4 | CRLF |
| 3 | CRLF | << changed all LFs back to CRLFs
| 2 | LF | << mistake introduced here
| 1 | CRLF |
+---------+-----------+
问题是此文件现在被标识为二进制文件(即使在我手动更正了版本3中的问题之后)。这导致diff
,blame
和其他工具停止在此文本文件上按预期工作。
我尝试在*.xml crlf diff
中设置./git/info/attributes
但它仅适用于diff
而不适用于blame
,同时也怀疑我可能会遇到合并冲突问题。提交此文件时,它还会向我发出LF will be replaced by CRLF
警告,表示属性设置不足。
这是在设置了autocrlf = true
的Windows操作系统上。
如何让git再次将其识别为文本文件?
答案 0 :(得分:4)
不推荐使用'crlf'属性。它已被'text'和'eol'属性所取代,但您很可能不需要使用'eol'属性。
Git从未打算在内部存储CRLF行结尾,因此这可能需要历史记录重写才能完全修复。改变行结尾的提交将是最早的提交,因为它认为整个文件被重写(它是)。
尝试阻止这种情况再次发生的一种方法是将* text=auto
添加到.gitattributes
并将该文件提交给回购。
有关此内容的更多信息,请访问gitattributes man page。