在一台Windows机器上,我使用git add添加了一些文件。 我收到警告说:
LF将被CRLF取代
这种转变的后果是什么?
在一台Windows机器上,我使用git add添加了一些文件。 我收到警告说:
LF将被CRLF取代
这种转变的后果是什么?
当前回答
确保您已经安装了最新版本的Git
我在之前的回答中,git配置核心。在使用Git(2.7.1版)时,自专制错误,但它不工作。
然后,当升级git(从2.7.1到2.20.1)时,它就可以工作了。
其他回答
在notepad++中打开文件。 进入菜单编辑→EOL转换。 单击Windows格式。 保存文件。
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:别担心……不要把这看作是警告,而应该把它看作是通知消息。
unix2dos和dos2unix都可以在Windows Git Bash上使用。可以使用以下命令进行UNIX (LF)→DOS (CRLF)转换。因此,您将不会得到警告。
unix2dos filename
or
dos2unix -D filename
但是,不要在任何现有的CRLF文件上运行这个命令,因为这样每隔两行就会得到空换行符。
dos2unix -D文件名不适用于所有操作系统。请检查此链接的兼容性。
如果出于某种原因你需要强制执行命令,那么使用——force。如果它表示无效,则使用-f。
如果您已经签出了代码,那么文件就已经建立了索引。在更改Git设置后,运行以下命令:
git config --global core.autocrlf input
您应该使用
git rm --cached -r .
并重写Git索引
git reset --hard
注意:这将删除您的本地更改。在你这么做之前考虑把它们藏起来。
来源:配置Git处理行结束符
在Vim中,打开文件(例如::e YOURFILEENTER),然后
:set noendofline binary
:wq