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

LF将被CRLF取代

这种转变的后果是什么?


当前回答

unix2dos和dos2unix都可以在Windows Git Bash上使用。可以使用以下命令进行UNIX (LF)→DOS (CRLF)转换。因此,您将不会得到警告。

unix2dos filename

or

dos2unix -D filename

但是,不要在任何现有的CRLF文件上运行这个命令,因为这样每隔两行就会得到空换行符。

dos2unix -D文件名不适用于所有操作系统。请检查此链接的兼容性。

如果出于某种原因你需要强制执行命令,那么使用——force。如果它表示无效,则使用-f。

其他回答

如何使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将尊重混合行结束项目中的行结束符,而不会就此警告您。

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

我不太了解Windows上的Git,但是……

在我看来,Git正在转换返回格式以匹配正在运行的平台(Windows)。CRLF是Windows上的默认返回格式,而LF是大多数其他操作系统的默认返回格式。

当代码被移动到另一个系统时,返回格式可能会得到适当的调整。我还认为Git足够聪明,可以保持二进制文件的完整性,而不是试图在JPEG文件中将lf转换为crlf。

总而言之,您可能不需要为这种转换担心太多。但是,如果您将项目归档为tarball,其他编码员可能会喜欢使用LF行终止符而不是CRLF。取决于你有多关心(取决于你不使用记事本),你可能想要设置Git使用LF返回,如果你可以的话:)

附录:CR为ASCII码13,LF为ASCII码10。因此,CRLF是两个字节,而LF是一个字节。

从~/。gitattributes文件,

* text = auto

将防止Git首先检查行结束符。

git config core.autocrlf false