LF 将由 git 中的 CRLF 替换 - 那是什么,它很重要吗?

可能重复:
git 用 CRLF 替换 LF

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

然后繁荣!我看到几乎所有文件都会弹出。我通常只是继续构建我的应用程序,在对文件进行许多更改后它消失了。

例:

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

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

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

LF 和 CRLF 有什么区别?

从长远来看,我应该担心这个问题还是只是忽略它并像往常一样继续前进?

答案

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

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

git config core.autocrlf true

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

这是一个片段

格式和空格

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

core.autocrlf

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

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

$ git config --global core.autocrlf true

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

$ git config --global core.autocrlf input

此设置应使您在 Windows 检出中具有 CRLF 结尾,但在 Mac 和 Linux 系统以及存储库中具有 LF 结尾。

如果您是 Windows 程序员,并且仅在 Windows 上执行项目,则可以关闭此功能,通过将 config 值设置为 false 来在存储库中记录回车:

$ git config --global core.autocrlf false

如果需要,您可以使用以下命令在 git core 配置中停用此功能

git config core.autocrlf false

但是最好使用以下方法消除警告

git config core.autocrlf true