问题类型
windows中的换行符为 CRLF, 而在Linux下的换行符为LF,所以在执行add . 时出现提示:warning: LF will be replaced by CRLF in README.md. The file will have its original line endings in ;
$ git add .warning: LF will be replaced by CRLF in 工欲善其事,必先利其器/README.md.The file will have its original line endings in your working directory.warning: LF will be replaced by CRLF in 谁能九层台,不用累土起/README.md.The file will have its original line endings in your working directory.
问题原因
设置 core.autocrlf=true 后:检出时,git 会把文本文件的换行符转化为 CRLF(只转化纯 LF 的文件)提交时,把暂存区的内容(也就是我们对工作区做的改动)转化为 LF 然后放入版本库。转化暂存区的内容时,如果发现里面存在 LF 换行符,LF 会被转化成 CRLF,并给出题主提到的那条警告:”LF will be replaced by CRLF”这句警告的下面其实还有一句很重要的话:warning: LF will be replaced by CRLF in .
The file will have its original line endings in your working directory. (翻译下就是:“在工作区里,这个文件会保持它原本的换行符。”)简单来说,设置 core.autocrlf=true 后,我们工作区的文件都应该用CRLF 来换行。如果改动文件时引入了 LF,或者设置 core.autocrlf 之前,工作区已经有 LF 换行符。提交改动时,git 会警告你哪些文件不是纯 CRLF 文件,但 git 不会擅自修改工作区的那些文件,而是对暂存区(我们对工作区的改动)进行修改。
最佳解决方案
- 直接设置core.autocrlf=false;
除了记事本编辑不可以,其他都可以
git config -–global core.autocrlf false // 禁用自动转换git rm -rf cached ./ // 清除添加到缓存区的缓存git add .git commit -m "提交备注信息"git push origin master // 推送到远程仓库