.gitattributes 文件不转换行尾

.gitattributes file not converting line endings

我在 git 安装 (CentOS) 的根目录中创建了一个 .gitattributes 文件。我已经通过 samba 共享连接在 PHPStorm 中创建了测试文件,并将行结尾专门设置为 CRLF。我添加并提交了测试文件,希望文件的行尾更改为 LF,但是当我在 vim 中检查文件时,它说: [noeol][dos] 在我打开文件名时文件。 .gitattributes 文件似乎没有转换为 LF...我说的不对吗?我相当确定我的属性设置正确(见下文)。我做错了什么吗?

# Set the default behavior, in case core.autocrlf is not set
* text=auto

# Explicitly declare text files you want to always be normalized and  converted to native line endings
*.htm text
*.html text
*.tpl text
*.css text
*.js text
*.php text
*.xml text
*.txt text
*.ini text
*.inc text
*.bak text
*.pm text
*.cgi text
.htaccess text

# Denote all files that are truely binary and should not be modified
*.png binary
*.jpg binary
*.jpeg binary
*.gif binary
*.ico binary
*.mov binary
*.mp4 binary
*.mp3 binary
*.flv binary
*.fla binary
*.swf binary
*.gz binary
*.zip binary
*.7z binary
*.ttf binary

Git 转换发生在您正在执行的任何操作的目的地,并且您可以在进出存储库的途中有不同的转换。在这里,您告诉它以两种方式转换文本 eol,但实际上还没有从 repo 中提取任何内容。执行 git reset --hard 以使用任何新的 filters/attributes 从提交的内容中强制刷新当前工作树。 因为 git 2.16 你也可以使用

git add --renormalize .

可能有点违反直觉的是,text 属性处理控制着进入回购的过程中发生的事情,而 core.eol 控制着离开时发生的事情:

text
This attribute enables and controls end-of-line normalization. When a text file is normalized, its line endings are converted to LF in the repository. To control what line ending style is used in the working directory, use the eol attribute for a single file and the core.eol configuration variable for all text files.