一尘不染

LF 将在 git 中被 CRLF 取代 - 那是什么,它重要吗?

javascript

当我创建一个新的 rails 应用程序时,我在 git 中看到有关 LF 替换的警告。我做 git init git add 。

然后轰隆隆!我看到几乎所有文件都会弹出这个。我通常只是继续构建我的应用程序,但在对文件进行多次更改后它就会消失。

例子:

该文件将在您的工作目录中具有其原始行结尾。警告:LF 将被 Gemfile 中的 CRLF 替换。

该文件将在您的工作目录中具有其原始行结尾。警告:LF 将被 Gemfile.lock 中的 CRLF 替换。

该文件将在您的工作目录中具有其原始行结尾。警告:自述文件中的 LF 将被 CRLF 替换。

LF 和 CRLF 有什么区别?

从长远来看,我应该对此感到担忧还是只是忽略它并像往常一样继续前进?


阅读 185

收藏
2022-02-21

共1个答案

一尘不染

在 Unix 系统中,行尾用换行符 (LF) 表示。在windows中,一行用回车符(CR)和换行符(LF)表示(CRLF)。当您从 git 获取从 unix 系统上传的代码时,它们将只有一个 LF。

如果您是在 windows 机器上工作的单个开发人员,并且您不关心 git 自动将 LF 替换为 CRLF,您可以通过在 git 命令行中键入以下内容来关闭此警告

git config core.autocrlf true

如果您想做出明智的决定 git 应该如何处理,请阅读文档

这是一个片段

格式化和空白

格式和空白问题是许多开发人员在协作时遇到的一些更令人沮丧和微妙的问题,尤其是跨平台。补丁或其他协作工作很容易引入细微的空白更改,因为编辑器会默默地引入它们,并且如果您的文件曾经触及 Windows 系统,它们的行尾可能会被替换。Git 有一些配置选项可以帮助解决这些问题。

core.autocrlf

如果您在 Windows 上编程并与非 Windows 的人一起工作(反之亦然),您可能会在某些时候遇到行尾问题。这是因为 Windows 对其文件中的换行符同时使用回车符和换行符,而 Mac 和 Linux 系统仅使用换行符。这是跨平台工作的一个微妙但令人难以置信的事实;Windows 上的许多编辑器会默默地用 CRLF 替换现有的 LF 样式的行尾,或者在用户按下回车键时插入两个行尾字符。

当您将文件添加到索引时,Git 可以通过将 CRLF 行结尾自动转换为 LF 来处理这个问题,反之亦然,当它检出代码到您的文件系统时。您可以使用 core.autocrlf 设置打开此功能。如果您使用的是 Windows 机器,请将其设置为 true - 当您签出代码时,这会将 LF 结尾转换为 CRLF:

$ git config --global core.autocrlf true

如果您在使用 LF 行结尾的 Linux 或 Mac 系统上,那么您不希望 Git 在您检出文件时自动转换它们;但是,如果意外引入了带有 CRLF 结尾的文件,那么您可能希望 Git 修复它。您可以通过将 core.autocrlf 设置为输入来告诉 Git 在提交时将 CRLF 转换为 LF,但不能反过来:

$ git config --global core.autocrlf input

此设置应在 Windows 结帐中为您提供 CRLF 结尾,但在 Mac 和 Linux 系统以及存储库中为 LF 结尾。

如果你是一名 Windows 程序员,正在做一个仅限 Windows 的项目,那么你可以关闭这个功能,通过将配置值设置为 false 来记录存储库中的回车:

$ git config --global core.autocrlf false

2022-02-21