今天在mac下使用idea的git提交一份从windows上copy过来的代码时,报了如下的错:
去官网查了一下, 基本明白了git的core.autocrlf参数的作用.
因为Windows使用回车和换行两个字符(CRLF)来结束一行,而Mac和Linux只使用换行一个字符(LF), 这样在跨平台协作开发时,就可能会出现问题.
git通过core.autocrlf参数可以控制提交和检出文件时,是否自动转换换行符.
git config --global core.autocrlf true/false/input
- 如果你不存在跨平台,比如从Windows提交代码到windows,或者从mac上提交到linux上, 那就把它设置成false, 则提交与检出时不存在转换 ;
- 如果你从windows提交到linux (国内应该很多这种情况),那就有必要把它设置成true,这样你提交时CRLF自动转换成LF,而在检出代码时LF自动转换成CRLF ;
- 如果只想提交时将CRLF自动转换成LF,检出时不变 . 比如我遇到的情况, 本地是mac,git服务器是linux,我本不需要自动转换控制, 但是我copy的文件是windows下的恰恰有CRLF, 于是我只需要在提交时转换, 此时就需要设置参数值为input. 在上面idea弹框下,点击Fix and Commit即可.