README.md文件中的LF将被CRLF取代
1.基本含义
1.1 Uinx/Linux采用换行符LF表示下一行(LF:LineFeed,中文意思是换行)\n
2.Dos和Windows采用回车+换行CRLF表示下一行(CRLF:CarriageReturn LineFeed,中 \n文意思是回车换行)\r\n
3.Mac OS采用回车CR表示下一行(CR:CarriageReturn,中文意思是回车)\r
2.原因
不同的系统存在换行符号转义不一致,windows上的换行[ \r\n ] 到linux上就会多个[ \r ] ,显示为 [ ^M ],
linux上 vim -b filename 可以看到 [ ^M ]
3.解决方案
3.1 假如你正在Windows上写程序,又或者你正在和其他人合作,他们在Windows上编程,而你却在其他系统上,在这些情况下
$ git config --global core.autocrlf true
Git可以在你提交时自动地把行结束符CRLF转换成LF,而在签出代码时把LF转换成CRLF。用core.autocrlf来打开此项功能,如果是在Windows系统上,把它设置成true,这样当签出代码时,LF会被转换成CRLF:
3.2 Linux或Mac系统使用LF作为行结束符,因此你不想 Git 在签出文件时进行自动的转换;当一个以CRLF为行结束符的文件不小心被引入时你肯定想进行修正,把core.autocrlf设置成input来告诉 Git 在提交时把CRLF转换成LF,签出时不转换:
$ git config --global core.autocrlf input
这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。
3.3 如果你是Windows程序员,且正在开发仅运行在Windows上的项目,可以设置false取消此功能,把回车符记录在库中:
$ git config --global core.autocrlf false
3.4 如果window中的CRLF已经提交到linux上,删除^M的方法
sed -i 's/^M//g' filename
其中^M的输入方式为 ctrl+v +m
网友评论