Git 签出带有 LF 行结尾的文件

Git checkout files with LF line endings

PSR-12 for PHP and Airbnb's ESLint config for React requires LF line endings over CRLF. I see in the ESLint docs that they recommend adding a .gitattributes file 内容类似:

*.js text eol=lf

我查看了 Git 文档,它提到使用 eol 会使路径被认为是脏的。这是什么意思?我还注意到文档后面提到了 core.safecrlf,那么这些类型的转换会导致不可逆转的问题吗?

我还需要 吗?

当您在 Git 中将文件设置为 text 模式时,这会告诉 Git 您希望它执行行尾转换。这意味着 Git 将始终以 LF 结尾将文件写入其内部存储,然后检查指定的结尾,无论是由于 .gitattributes 还是各种配置选项。

但是,如果存储库已经包含签入了 CRLF 行结尾的文件,则设置 eol 选项将导致文件以 LF 结尾签入存储库,如上所述。这将使 Git 认为文件已被修改,事实确实如此。这就是使“路径被认为是脏的”的意思。

解决这个问题最简单的方法是将条目添加到.gitattributes,添加.gitattributes文件,然后运行 git add --renormalize .然后提交。这样,任何具有 CRLF 结尾的文件都将在存储库中转换为 LF 结尾。

不需要另外设置core.autocrlf。该行为被 .gitattributes 文件覆盖。