windows git clone 仓库代码换行符问题

    今天出现一个很蛋疼的问题,在windows上通过docker clone下git上面的代码,clone下来后Build.sh后无法正常工作,发现是代码是windows换行符,执行会报错:

[worker@newdev php-msf-demo]$ ./server.php
-bash: ./server.php: /home/worker/php/bin/php^M: bad interpreter: No such file or directory

改为unix换行符,执行没有报错,但无任何反应,启动失败。
[worker@newdev php-msf-demo]$ ./server.php
[worker@newdev php-msf-demo]$

于是提了issue,结果闹了一个乌龙,说是我本地的编辑器问题,然后代码仓库没有composer install, 这个是最蛋疼的,老是忘记。

    下来之后回到家里,再重新clone,仍然发现了windows换行符,最后考虑了下是不是在linux下面git clone就不会出问题,结果尝试了一下,果然是这个问题。网上搜罗了一下终于找到了解决方案:

不是由于编辑器换行符不正确,而是由于windows下docker,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还是采用第二种比较好

Be the First to comment.

猜你喜欢

转载自blog.csdn.net/wccczxm/article/details/89379132