木灵鱼儿
阅读:2063
不同平台的回车处理 warning Delete `␍` prettier prettier
windows和linux平台,他们之间的换行符是不一样的,mac之前也不一样,后来和linux保持统一。
- windows是
CRLF
,也就是\r\n
; - linux是
LF
,也就是\n
;
两个平台之间换行符不一样,在有代码规范要求的情况下,很容易就会触发报错,如eslint的报错:warning Delete ␍ prettier/prettier
解决办法
假设我们代码规范要求换行是LF
;那我们需要进行以下配置:
- git提交时自动格式化换行符
这个做法是防止有人本地编辑的时候没有改为LF的换行方式然后上传,导致别人拉库下来会运行报错。
在项目根目录创建:.gitattributes
文件
文件内写入:
# LF为小写的lf,CRLF为小写的crlf
* text eol=lf
这个就表示上传时会自动格式化换行符
当然也可以指定某个格式的文件是这个
.js text eol=lf
如果没有自动转,你需要开启一下git的这个功能
git bash 输入:
git config --global core.autocrlf input
这句话的意思是提交时转为LF,拉下来时不自动转为CRLF
当然还有很多设置,具体看这个链接:《git 换行符LF与CRLF转换问题 IDE的默认换行符设置为LF》
当然,仅仅配置这个是没用的,如果他开启了代码检测,那么你修改的时候,换行符还是CRLF,改动文件后还是会报错,所以我们还需要调整一下编辑器。
- 调整编辑器的默认换行符
以vscode为例,直接在编辑器最底下点击即可切换
切换好后再修改,就行了,这样上传代码和即时编辑都是根据代码规范来得。
当然,如果你的代码规范是CRLF,你也可以根据上面自己调整一下就行了。
- 补充.gitattributes
虽然我们设置了* text eol=lf
;但是这会产生一个问题,他会把图片资源或者其他二进制资源的回车也给格式化了,这就导致资源文件的破坏,当然它的转换只会转换设置之后的文件,旧的之前的文件并不会被自动转换。
为了不影响文件,我们还需要添加以下内容:
# Define binary file attributes.
# - Do not treat them as text.
# - Include binary diff in patches instead of "binary files differ."
*.eot -text diff
*.exe -text diff
*.gif -text diff
*.gz -text diff
*.ico -text diff
*.jpeg -text diff
*.jpg -text diff
*.otf -text diff
*.phar -text diff
*.png -text diff
*.svgz -text diff
*.ttf -text diff
*.woff -text diff
*.woff2 -text diff
-text diff
再git中明确表示这个文件不被行尾跟踪和转换。
当然还有人使用这种写法:
*.png binary
binary表示这是二进制文件不应修改。
更多内容可以参考国外stackoverflow网站的: Force LF eol in git repo and working copy
提交时提示非代码文件换行错误
个人猜测原因是因为我们git虽然设置了core.autocrlf input自动在提交时转换尾换行符,但是资源文件,他也是一种代码形式,它的换行可能不符合要求,于是报出警告。
解决方式:
git config --global core.safecrlf warn #发现CRLF是警告并继续
这样设置就行了
另一种做法
如果不想配置.gitattributes,那么就让vscode的换行符改为指定的格式,然后关闭git的自动转换
git config --global core.autocrlf false
某一个文件换行符不对的格式化方法
git的换行符转换的配置只适合新文件,旧文件不合适,如果打开了旧文件,你会发现还是CRLF
格式,此时在vue cli启动的情况下触发保存,那么就会提示warning Delete ␍ prettier prettier
的报错。
解决办法也很简单,你再vscode的右下角可以发现,尾换行变成了CRLF
我们把它给为LF
;就会发现文件被修改了,其实就是被格式化了尾换行符,这样我再保存一下文件,就不会再报这个错误了。
版权申明
本文系作者 @木灵鱼儿 原创发布在木灵鱼儿 - 有梦就能远航站点。未经许可,禁止转载。

相关推荐
github重新设置ssh rsa key
前言最近遇到这么一个问题,我之前在搞ssh远程的时候,把之前生成的rsa令牌全给删除了,这就导致之前在github上绑定的key无法继续使用了,我无法再推送数据到github仓库了。解决办法就是重新生成一个令牌并绑定,期间还需要在首次的时候使用命令拉取一下,并输入yes才行。教程生成rsassh-keygen -t ed25519 -C "your_email@example.com"照着官方的教程就行了,此时window用户,他会在:本地c盘 -> 用户 -> 你的用户名 -> .ssh目录下,生成名为ed25519的令牌,它有两个文件:id_ed...

git配置http、socks5代理
# 以下使用socks5代理 git config --global http.proxy socks5://127.0.0.1:1086 git config --global https.proxy socks5://127.0.0.1:1086 # 以下使用http代理 git config --global http.proxy http://127.0.0.1:1087 git config --global https.proxy https://127.0.0.1:1087 # 取消代理 git config --global --unset http.proxy gi...
shell脚本 一键git拉取多个项目代码
由于一个项目用到了三个git仓库,然后vscode并不能打开一个目录扫描所有的git仓库,而且多个的时候更加不好判断,哪些文件是哪个仓库的,所以,每次都是每个仓库单独用vscode打开,然后手动拉取,太痛苦了。当你有3个项目,你就需要拉取9次,而且很多时候是重复,比如一些通用的代码仓库。但是,目前哪个git管理的软件都好难用啊,所以还是写个脚本好了。使用前的要求:由于脚本运行时用的git pull,所以如果你需要拉取项目中某个分支,请预先将项目分支调整好,然后就是git账号了,用户密码,全局用户名邮箱这些,基础操作。然后就是配置项目路径:假设我们a目录下有b、c、d三个项目,那么我们脚本...

git 删除远程分支某个文件或者某个文件夹
经常遇到这种情况,不小心上传了某个文件,这个文件是不需要上传到远程仓库,很头疼。本地的又不想删除,想着直接删除远程,百度半天都没找到好用的,最后问了下群友,给了个教程链接,我研究了下,大概明白怎么回事。首先为了防止本地的再次被上传,需要配置本地白名单,白名单的话,以vue项目为例子,在项目根目录有一个.gitignore文件,没有就自己创建一个,然后里面直接填目录或者文件名就行了。/dist /xxx.js本地白名单之后,以后git上传都不会上传该文件。现在我们要处理远程仓库的文件首先我们需要删除git在缓存中的文件git rm --cached config.js //删除conf...
vscode 无法推送refs到远端。您可以试着运行“拉取”’功能,整合您的更改
这个问题出现的场景常常是这样:有人已经上传了一份文件a,自己也修改了文件a,准备推送时发现冲突了,然后,关闭了合并冲突的操作,哦吼,完了,拉也拉取不了,推送也推不了,放弃本次提交也不行。这种情况在文件多的情况常有发生,如果修改量不大的情况下,我建议直接放弃本地所有修改使用命令:git reset --hard origin/master如果你的文件是最新有效的,可以尝试先把本地的文件复制出来,在用上面的代码放弃,然后拉取完毕后再推送。
git永久删除文件或文件夹并删除历史记录同步到远程仓库
删除文件需要注意一点,就是你当前的项目,没有任何文件在待提交上,或者暂存区,有的话如果不重要你可以取消掉,或者先提交一次。让git这两个区域空下来。如果没有清空使用删除,会提示如下代码:Cannot rewrite branches: You have unstaged changes.永久删除文件清空暂存和提交区,然后输入以下命令:git filter-branch --force --index-filter 'git rm --cached --ignore-unmatch password.txt' --prune-empty --tag-name-filter cat -- -...
开朗的网友
Google Chrome Windows 7牛逼666