Jimmy那些事儿

Git常见问题与解决

Git常见问题与解决

windows使用git时出现:warning: LF will be replaced by CRLF的解决办法

遇到这两个错误,是因为Git的换行符检查功能。

core.safecrlf

Git提供了一个换行符检查功能(core.safecrlf),可以在提交时检查文件是否混用了不同风格的换行符。这个功能的选项如下:

  • false - 不做任何检查
  • warn - 在提交时检查并警告
  • true - 在提交时检查,如果发现混用则拒绝提交

建议使用最严格的 true 选项。

假如你正在Windows上写程序,又或者你正在和其他人合作,他们在Windows上编程,而你却在其他系统上,在这些情况下,你可能会遇到行尾结束符问题。这是因为Windows使用回车和换行两个字符来结束一行,而Mac和Linux只使用换行一个字符。虽然这是小问题,但它会极大地扰乱跨平台协作。

Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF:

在Windows环境下使用git进行add的时候,会提示如下warning: “warning:LF will be replacee by CRLF”。

这是因为在Windows中的换行符为CRLF,而在Linux中的换行符为LF。在git创建的项目中换行符为LF,而执行git add时,系统会提示LF将被转换为CRLF。解决的办法很简单,禁止git的自动转换即可。

$ git config --global core.autocrlf false //禁用自动转换

然后再进行git操作即可。

如果项目已经创建,则需要先删除之前创建的.git 文件后添加上面的设置。

1
2
$ rm -rf .git
$ git config --global core.autocrlf false

完成后再重新执行git操作

1
2
3
$ git init
$ git add .
$ git remote add ***

P.S.

CRLF : Carriage-Return Line-Feed 回车换行。即回车(CR,ASCII 13, \r)换行(LF, ASCII 10, \n).

在windows中使用回车换行标识一行的结束,而Linux中则只有换行符。