在一台Windows机器上,我使用git add添加了一些文件。 我收到警告说:

LF将被CRLF取代

这种转变的后果是什么?


当前回答

CR和LF是一组特殊的字符,用于帮助格式化代码。

CR (/r)将光标放在一行的开头,但不创建新的行。这就是macOS的工作原理。

LF (/n)创建了一个新行,但它不会将光标放在该行的开头。光标停留在最后一行的末尾。这就是Unix和Linux的工作原理。

CRLF (/r/f)创建新行,并将光标放在新行开头。这就是我们在Windows操作系统中看到的情况。

总结:

Lf(换行)

代表换行 用/n表示 在代码中创建新行 ASCII码是10。 用于Unix和其他基于它的操作系统。

Cr(车厢返程)

代表回车 用/r表示 将光标放在行首。 ASCII码是13。 macOS及其前身使用。

CRLF(回车换行)

代表回车和换行 用/n/r表示 创建新行,并将光标放在新行开头。 LF的ASCII码是10,CR的ASCII码是13。 主要用于Windows操作系统。

Git默认使用LF。因此,当我们在Windows上使用Git时,它会抛出一个像“CRLF将被LF取代”这样的警告,并自动将所有CRLF转换为LF,因此代码变得兼容。

NB:别担心……不要把这看作是警告,而应该把它看作是通知消息。

其他回答

在Vim中,打开文件(例如::e YOURFILEENTER),然后

:set noendofline binary
:wq
git config core.autocrlf false

如何使Git忽略不同的行结束

http://www.rtuin.nl/2013/02/how-to-make-git-ignore-different-line-endings/(不工作)

您可以完全禁用CRLF行为,或者通过更改.gitattributes文件中的条目来禁用每个文件类型。在我的例子中,我写的是: crlf 这告诉Git忽略所有文件的行结束符。并且不会更改工作目录中的文件。即使你有核心。自专制设置为true, false或输入。

echo "* -crlf" > .gitattributes

在单独提交时执行此操作,否则当您进行单个更改时,Git可能仍然会看到整个文件被修改(取决于您是否更改了selflf选项)。

这个真的有用。Git将尊重混合行结束项目中的行结束符,而不会就此警告您。

它应该是:

警告:(如果你检出/或克隆到另一个文件夹与你当前的核心。如果为true,)LF将被CRLF所取代 该文件将在您的(当前)工作目录中有其原始的行结束符。

这张图可以解释它的意思。

在GNU/Linux shell提示符中,dos2unix和unix2dos命令允许您轻松地转换/格式化来自MS Windows的文件。