预期换行符为'LF'但发现了CRLF

11
我正在使用Visual Studio Code,并继承了一个使用“LF”行尾的项目。默认情况下,Visual Studio Code在Windows 10上打开我的文件时会使用CRLF(回车符和换行符),这会导致我的git预提交钩子失败。如果我在屏幕右下角切换Visual Studio Code使用LF,就不会收到任何错误消息,但显然,我希望避免每次编辑并尝试提交文件时都要切换这个设置。
我按照这个问题 (链接) 的说明进行操作,我的理解是将files.eol设置为“\n”会在LF中打开文件,但它仍然以CRLF方式打开。
我对这些东西有点新,所以请耐心等待,但如果有人能告诉我我做错了什么,那就太好了。
值得一提的是,该项目有一个带有end_of_line设置为LF的editorconfig文件,将其更改为CRLF也没有帮助。
4个回答

32

注意 - 确保您没有任何未提交的更改,否则运行以下命令时它将被删除!

在终端或命令提示符中运行此命令

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

通常在UNIX系统上创建项目,然后在Windows系统上使用时会发生这种情况,因为两者具有不同的行尾符。

我们需要在git上禁用自动CRLF,取消提交并重新提交更改。

参考


2
这个方案有效。我们有一个在Windows上使用WebStorm的开发人员打开每个文件并查找关于CRLF的linting错误。存储库中的文件是由OS X上的开发人员编写和提交的,因此我们无法弄清楚为什么在Windows上的开发人员在修改文件之前就会出现CRLF错误。在Windows机器上遵循这个解决方案解决了问题。 - jakxnz

3
你可以在VSCode中通过文件 > 首选项 > 设置 > 文件:Eol设置默认的行尾字符。"Original Answer"翻译成"最初的回答"。

0
当克隆项目时,Git会自动将LF转换为CRLF,从而导致错误。
git config --global core.autocrlf false

为避免自动转换,请在克隆项目之前在Git Bash中运行“git config --global core.autocrlf false”。

0

1. VSCode设置:
设置行尾字符。

File > Preferences > Settings > Files:Eol

2.在gitconfig中将core.autocrlf设置为false:

在修改行尾之前,运行以下命令来禁用自动行尾转换:

git config core.autocrlf false

2. 运行行尾转换:在禁用自动行尾转换后,运行以下命令将您的代码库中所有已跟踪文件的行尾从CRLF更改为LF。
git rm --cached -r .
git reset --hard

在进行上述步骤之前,请备份您的更改,并确保您没有任何未提交的更改需要保留。

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