Я только что попробовал это [Linux;git version 2.1.0] И насколько я могу видеть, что он работает со следующими настройками:
$ cat .gitattributes
.gitattributes text
.gitignore text
*.cpp text
*.h text
$ cat ~/.gitconfig
...
[core]
autocrlf = false
safecrlf = true
eol = crlf
В этой конфигурации git разрешает только файлы crlf в базу данных и выдает фатальную ошибку для lf on git add
.
Удалите настройку safecrlf
и теперь git add
работает, но теперь вы получаете предупреждение для lf-файлов.
Теперь rm
проверенный файл и reset --hard
дает файл crlf - независимо от того, был ли он отмечен как lf или crlf.
Я подозреваю: у вас уже проверено в LF-файлах, и теперь git дает их.
Пожалуйста, попробуйте с указанными выше настройками на новом репо и сообщите нам, если он работает.