在提交过程中,我意外地将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再次将其标识为文本文件?

最佳答案

“crlf”属性已弃用。它已被“text”和“eol”属性替换,但您很可能不需要使用“eol”属性。
git从未打算在内部存储crlf行结尾,因此这可能需要重写历史记录才能完全修复。更改行尾的提交将是最早的提交,因为它认为整个文件都被重写了。
试图防止这种情况再次发生的一种方法是将* text=auto添加到.gitattributes并将该文件提交到repo。
有关这方面的更多信息,请访问gitattributes man page

关于git - 修复git中的换行问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4995050/

10-13 07:16