在windows上通过git下代码,clone下来后configure脚本/源文件后无法正常工作,发现是代码是windows换行符,执行会报错:
[worker@newdev php-msf-demo]$ ./configure
-bash: ./configure: /home/disk/php/bin/php^M: bad interpreter: No such file or directory
在linux系统下git clone代码库没问题,可以正常工作编译。
解决方案:
由于windows下git clone出来的代码自动转换了换行符.
解决办法:
git config –global core.autocrlf input
这些在clone下来的代码就保持原仓库换行符了.
其实安装git的时候有选项的:
Checkout Windows-style, commit Unix-style line endings
当检出文本文件时,Git会将LF转换为CRLF。当提交文本文件时,CRLF将会被转换为LF。对于跨平台的项目,这是对Windows系统的推荐设置。(“core.autocrlf” is set to “true”)
Checkout as-is, commit Unix-style line endings
当检出文本文件时,Git不会做任何转换。当提交文本文件时,CRLF将会被转换为LF。对于跨平台的项目,这是对Unix系统的推荐设置。(“core.autocrlf” is set to “input”)
Checkout as-is, commit as-is
不论是检出还是提交文本文件时,Git都不会做任何转换。对于跨平台的项目,不推荐采用该选项。
由于现在虽然都是在windows下开发,但是很多都用的虚拟机,所以git还是采用第二种比较好
命令行设置:
#提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true
#提交时转换为LF,检出时不转换
git config --global core.autocrlf input
#提交检出均不转换
git config --global core.autocrlf false
附:不同系统下换行符不同
CR回车 LF换行 Windows/Dos CRLF \r\n Linux/Unix LF \n MacOS CR \r