在提交过程中,我意外地将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再次将其标识为文本文件?
最佳答案
“crlf”属性已弃用。它已被“text”和“eol”属性替换,但您很可能不需要使用“eol”属性。
git从未打算在内部存储crlf行结尾,因此这可能需要重写历史记录才能完全修复。更改行尾的提交将是最早的提交,因为它认为整个文件都被重写了。
试图防止这种情况再次发生的一种方法是将* text=auto
添加到.gitattributes
并将该文件提交到repo。
有关这方面的更多信息,请访问gitattributes man page。
关于git - 修复git中的换行问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4995050/