.gitattributes文件不转换行结尾

时间:2015-02-03 22:47:55

标签: git vim centos phpstorm

我在我的git install(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

1 个答案:

答案 0 :(得分:2)

Git转换发生在您正在执行的任何操作的目标位置,并且您可以在进出回购的路上有不同的转换。在这里,你告诉它转换文本eol的两种方式,但实际上还没有从回购中提取任何内容。执行git reset --hard以使用任何新过滤器/属性强制从提交的内容刷新当前工作树。 自git 2.16起,您也可以使用

git add --renormalize .

text属性处理可以控制进入仓库的路径,而core.eol可以控制出路时发生的事情,这可能有点违反直觉:

  

文字
  此属性启用并控制行尾标准化。对文本文件进行规范化后,其行结尾将转换为存储库中的 em 。要控制工作目录中使用的行结束样式,请对单个文件使用eol属性,对所有文本文件使用core.eol配置变量。