git 换行符LF与CRLF转换问题 侵立删

先说下坑爹的经历:

今天部署环境是碰到个奇怪的问题,使用脚本解压静态资源后报404找不到资源文件,使用ftp工具查看时,这个文件夹是有的,开始怀疑是nginx配置有问题,看了半天没发现哪出了问题。后来,使用xshell的 ll 命令查看资源目录时发现了问题:资源文件的文件夹名称是 xxx? ,而不是正常的 xxx ,这个问号哪来的呢,感觉像是乱码,但是不知道是什么。又在网上百度了一通,什么linux下解压出现乱码咋解决、linux下拷贝出现乱码咋解决……其间心酸,说多了都是泪。后来,使用命令 ./xxx + tab键自动提示功能,显示了2个文件夹: xxx 和 xxx^M ,xxx是手工拷进去的,xxx^M就是脚本加压自动生成的,md,终于知道 ?是什么鬼了,继续百度……网上说 ^M是windows系统中的结束符,如果脚本是在windows环境编辑,上传到linux环境就可能出现,使用cat -A xxx.sh 就可以看到脚本每一行的后面都有^M,去掉这个符号的方法参考 https://www.jb51.net/article/142224.htm。按照网上的方式试了下,果然可以……我tmlfkasldjfejewirqwerqiwehrqkxcxcasdjasdfjasasdkjfasdfjdwensnadsd,一万只草拟马跑过,根本原因其实跟ide配置有关,以下是正文:

 

linux下sh脚本/bin/bash^M问题解决

如果是在windows下编辑的脚本,到了linux下运行时会报出这样的错误
/bin/bash^M:bad interpreter: No such file or directory
这时因为编码的问题,需要进行编码转换。使用sudo vim xxx打开文件,:set ff可以看到当前的格式,应该是dos,使用set ff=unix,更改其格式,然后保存退出,就能正常的运行程序了

来源:https://www.cnblogs.com/61355ing/p/10171487.html

Linux下去掉^M的四种方法

第一种方法:

cat -A filename 就可以看到windows下的断元字符 ^M

要去除他,最简单用下面的命令:

dos2unix filename

第二种方法:

sed -i ‘s/^M//g' filename
#注意:^M的输入方式是 Ctrl + v ,然后Ctrl + M 

第三种方法: 

#vi filename
:1,$ s/^M//g
^M 输入方法: ctrl+V ,ctrl+M

第四种方法:

#cat filename |tr -d ‘/r' > newfile
#^M 可用 /r 代替

来源:https://www.jb51.net/article/142224.htm

git 换行符LF与CRLF转换问题

一、背景

在各操作系统下,文本文件所使用的换行符是不一样的。UNIX/Linux 使用的是 0x0A(LF),早期的 Mac OS 使用的是0x0D(CR),后来的 OS X 在更换内核后与 UNIX 保持一致了。但 DOS/Windows 一直使用 0x0D0A(CRLF)作为换行符。Git提供了一个“换行符自动转换”功能。这个功能默认处于“自动模式”,当你在签出文件时,它试图将 UNIX 换行符(LF)替换为 Windows 的换行符(CRLF);当你在提交文件时,它又试图将 CRLF 替换为 LF。Git 的“换行符自动转换”功能听起来似乎很智能、很贴心,因为它试图一方面保持仓库内文件的一致性(UNIX 风格),一方面又保证本地文件的兼容性(Windows 风格)。但遗憾的是,这个功能是有 bug 的,而且在短期内都不太可能会修正。

二、解决方案

1.Git设置

git config --global core.autocrlf false
git config --global core.safecrlf true
含义:
AutoCRLF
#提交时转换为LF,检出时转换为CRLF
git config --global core.autocrlf true

#提交时转换为LF,检出时不转换
git config --global core.autocrlf input

#提交检出均不转换
git config --global core.autocrlf false
SafeCRLF
#拒绝提交包含混合换行符的文件
git config --global core.safecrlf true

#允许提交包含混合换行符的文件
git config --global core.safecrlf false

#提交包含混合换行符的文件时给出警告
git config --global core.safecrlf warn

2.IDE设置使用UNIX换行符

IDEA的设置File -> Settings
Editor -> Code Style
Line separator (for new lines) ,选择:Unix and OS X (\n)

对已使用Windows换行符的文件,可以使用Sublime Text打开,
View->Line Endings,选Unix,保存;

来源:https://www.cnblogs.com/sdgf/p/6237847.html

猜你喜欢

转载自blog.csdn.net/qq_22167989/article/details/90729635