最近,我使用gits选项core.autocrlf
摆弄并将其设置为input
。我测试了配置参数是否设置正确:
$ git config --global core.autocrlf
input
$ git config core.autocrlf
input
然后测试gits行为我删除了项目文件夹的所有内容(当然除了文件夹.git
)并做了一个
git reset --hard HEAD
但是我的编辑告诉我,行结尾仍然是CRLF
。
为什么?
(我在Ubuntu上使用Atom作为编辑器。编辑器声明似乎是有效的,因为当我告诉它将所有行结尾更改为LF
时,git告诉我文件的每一行都被更改了。)
要了解有关整个主题的更多信息,请阅读以下文章:
答案 0 :(得分:2)
core.autocrlf=input
只会在将它们添加到索引(并提交它们)时采用文件结尾。
它不会在去往工作区的路上修改文件。您需要使用true
- 主要用于较旧的Mac和Windows,其中本机行结尾不是LF。
但很有可能.gitattributes对你来说是更好的系统,正如你提到的那篇文章所讨论的那样。
答案 1 :(得分:2)
来自the manual:
如果您使用的是使用LF行结尾的Linux或Mac系统,那么您不希望Git在您签出文件时自动转换它们;但是,如果意外引入了CRLF结尾的文件,那么您可能希望Git修复它。您可以告诉Git 在提交时将CRLF转换为LF ,而不是通过将core.autocrlf设置为输入
来反过来
它只在提交时进行转换。显然。
答案 2 :(得分:2)
<强> core.autocrlf=input
强>
不会更新现有文件。它只会将添加的文件行结尾设置为所需的格式。
<强>
core.autocrlf
强>将此变量设置为
true
几乎与在所有文件上将text属性设置为auto
几乎相同,只是文本文件不能保证规范化:存储库中包含CRLF的文件不会感动。如果要在工作目录中包含CRLF行结尾,请使用此设置,即使存储库没有标准化的行结尾。
<强>
This variable can be set to input, in which case no output conversion is performed
即可。
core.autocrlf=input
这意味着Git将处理所有文本文件,并确保在将 该文件写入对象数据库时将CRLF替换为LF 。但是,它不会反过来。