如何将所有文件的行尾符从CRLF更改为LF?

87
在Visual Studio Code中,我已将默认的EOL(行尾标记)从CRLF更改为LF,但这仅适用于新文件。我想知道如何一次性更改所有文件的EOL,因为我有100多个文件,手动更改将很困难。

这里有一个对我有效的解决方案。 enter image description here - Hellonearthis
4个回答

186

运行这些代码。它对我有效。按照您的要求进行自定义。

git config core.autocrlf false 
git rm --cached -r . 
git reset --hard

13
我认为这不是解决之道,如果有人使用Unix环境,将会遇到相同的换行符问题。 - Gaspar
如果您进行更改并且文件已缓存,则会有所帮助。 - konsalex
我发现的最好的解释这三个命令的作用的方法是通过如何强制Git使用LF而不是CR + LF的答案。 ~ * ~ 甚至更早的参考资料是如何让Git处理行尾的建议解决方案 - Henke
4
在第二行和第三行之间可能需要编写 git stash - Eduardo Barrera
3
应该在存储或提交当前更改之前添加警告。 - moanrisy
1
这是对我有效的答案。在我的情况下,项目配置为使用CRLF行尾,但我安装的Git for Windows的autocrlf设置为false。第一行将从现在开始更改行尾,第二行将删除本地文件中的现有行尾,第三行将使用新的autocrlf值重新创建现有文件中的行尾(并将删除所有本地更改)。 - undefined

37
为了解决项目中的问题,我使用了一个名为"Change All End Of Line Sequence"的Visual Studio Code扩展程序,按照该扩展程序的流程操作,并保存所有文件即可。
就是这样,希望能够帮助仍在寻找快速解决方案的人。

1
不确定为什么,但它对我不起作用。另一件事是“全部保存”(Ctrl+k)被禁用了,我无法使用它。 - Daniel Andrzejewski
非常非常非常感谢您提供这个扩展。作为一名程序员,整个过程是我做过的最愚蠢的事情之一。非常感谢! - undefined

31

如果您有一个Node.js开发环境和已安装的prettier,一种替换所有CRLF为LF的方法是在命令行中运行prettier --end-of-line lf --write .,其中点表示您当前工作目录的全部内容。

另一种方法是在.prettierrc配置文件中设置endOfLine选项为lf,并在package.json中放置一个脚本,如下所示:

...
  "scripts": {
    ...
    "format": "prettier --write ."
    ...
  }
...

那么,您只需要在终端中执行 npm run format,您的项目中所有被 prettier 目标文件都将自动更改并保存。


谢谢这个,它让我朝着正确的方向前进,但我发现我必须修改格式脚本,因为我得到了一个使用错误,关于没有提供任何文件。我正在使用node的express,所以我的工作脚本是 "format": "prettier app.js **/*.js --write", - DazBaldwin
3
不错!在我的情况下,我需要将所有Spring Boot项目的Java文件的行尾符从LF转换为CRLF。我已经安装了NodeJS。因此,我全局安装了prettier:npm install --global prettier,然后在根目录中执行了Prettier:npx prettier --end-of-line crlf --write .(此处的点是必需的),这解决了我的问题。 - harshrathod50
prettier --end-of-line lf --write . 如果你像我一样懒得一个一个文件去处理整个项目,这条命令可以给你自动格式化。 - ThaJay
哦天啊,不要这样做。现在我的分支显示每个文件都改变了,而不仅仅是我的功能文件 :( - JesseBoyd

3

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接