Git 的多平台换行符问题(LF or CRLF)

Windows下文本文件所使用的换行符是CRLF,而Linux/UNIX/macOS用的是LF。

使用Git的时候,默认当我们拉取远程文件的情况,会将LF格式的文件转换为CRLF格式的,在推送到远程时会进行一次转换将其变为LF格式推送上传。但这会在跨平台开发的时候造成一些问题,比如会影响正常diff的结果导致无法使用。

解决方法

在Git的工程根目录下增加.gitattributes文件。

在其中增加* text=auto eol=lf一行。这能保证Windows协作者在拉取时文件不会被转成CRLF格式。

我这个工程的 .gitattributes 文件内容如下:

* text=auto eol=lf
# Files with Unix line endings
*.py    text    eol=lf
*.js    text    eol=lf
*.jsx   text    eol=lf
*.json  text    eol=lf
*.sh    text    eol=lf

# Binary files
*.bin	binary

Pycharm的设置

现代的IDE或文本编辑器对于换行符都已经有了很好的支持。

设置在 File - Settings - Editor - Code Style

Scheme选择Project即代表该设置只对本项目工程生效。

General - Line separator选择Unix and macOS (\n)