use*_*810 22 git line-endings eol gitattributes
最近我在.gitattributes文件中遇到了以下条目:
"* text=auto !eol"
怎么!eol办?
and*_*rea 16
Git有2个属性来处理行尾:
文件说:
此属性启用并控制行尾标准化.对文本文件进行规范化后,其行结尾将在存储库中转换为LF
这实际上意味着当您提交回购时,它会将行结尾转换为LF
文件说:
此属性设置要在工作目录中使用的特定行结束样式.它可以在没有任何内容检查的情况下实现行尾标准化,从而有效地设置文本属性.
因此,虽然text属性会影响文件在IN REPO中的外观,但eol会影响文件在工作目录中的外观.
现在,属性可以有4种状态:
设置没有值
示例:* text
未设定的
例子:* -text
设置特定值
示例:* text=auto
未指明的
例子:* !text
所以,* text=auto !eol意味着:
所有文件都将属性文本设置为auto,并且未指定 eol属性.阅读文档,我们发现text = auto意味着你让git决定文件是否是文本,如果它是正常化它(将repo中的行结束设置为LF).
!eol表示属性eol显式设置为未指定.在这种情况下,它与完全没有指定它相同,指示Git查看core.eol配置设置,以了解如何处理工作目录中的行结尾.请注意:
core.eol配置变量控制Git将用于工作目录中规范化文件的行结尾; 默认设置是使用您平台的本机行结束,如果设置了core.autocrlf,则使用CRLF.
但你会在以下情况下使用!eol:
* text=auto eol=CRLF
test.txt !eol
Run Code Online (Sandbox Code Playgroud)
基本上覆盖了从CRLF到未指定 test.txt 的eol属性.这意味着,对于除test.txt的所有文件,Git会在结账EOLS转换成CRLF,但不会做任何事情来TEST.TXT.
* text=auto !eol
Run Code Online (Sandbox Code Playgroud)
暗示:
| 归档时间: |
|
| 查看次数: |
4719 次 |
| 最近记录: |