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

LF将被CRLF取代

这种转变的后果是什么?


当前回答

在两个不同的操作系统(Linux和Windows)中使用“代码”时,CRLF可能会导致一些问题。

我的Python脚本是在Linux Docker容器中编写的,然后使用Windows的Git Bash推送。它给了我LF将被CRLF取代的警告。我并没有想太多,但当我后来开始写剧本时,它说:

/usr/bin/env: 'python\r':没有这样的文件或目录

现在这个r对你们来说是ramification的意思。Windows在“\n”上方使用“CR”-换行符- \n\r。这是你可能需要考虑的事情。

其他回答

OP的问题是与windows相关的,我无法使用其他的目录,甚至无法在notepad++中运行文件,因为管理员无法工作…

所以不得不走这条路:

cd "C:\Program Files (x86)\Git\etc"
git config --global core.autocrlf false

其他答案对于一般概念来说是非常棒的。我遇到了一个问题,在更新警告后,仍然发生在现有的存储库,在以前的设置中提交。

加上——renoralize有帮助,例如:

Git添加——重新规范化。

从文档中可以看到:

将“清洁”进程新应用于所有跟踪文件,以强制执行 将它们再次添加到索引中。这在更改后很有用 核心。自专制配置或文本属性,以纠正 添加了错误的CRLF/LF行结束符的文件。这个选项意味着-u。”

git config core.autocrlf false

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:别担心……不要把这看作是警告,而应该把它看作是通知消息。

从~/。gitattributes文件,

* text = auto

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