Подтвердить что ты не робот

Git файлы, измененные после проверки, reset --hard и т.д., хотя autocrlf установлен в значение false

Вот мой системный диалог:

unrollme-dev-dan:views Dan$ git reset --hard HEAD
HEAD is now at 3f225e9 Fix scan titles
unrollme-dev-dan:views Dan$ git status
# On branch master
# Changes not staged for commit:
#   (use "git add <file>..." to update what will be committed)
#   (use "git checkout -- <file>..." to discard changes in working directory)
#
#   modified:   app/signup/finish.html
#   modified:   app/signup/scan.html
#

У меня autocrlf установлено значение false:

unrollme-dev-dan:unroll-website Dan$ git config core.autocrlf
unrollme-dev-dan:unroll-website Dan$ 
unrollme-dev-dan:unroll-website Dan$ git config --global core.autocrlf
unrollme-dev-dan:unroll-website Dan$

И у меня нет никаких файлов .gitattributes, которые испортили это:

unrollme-dev-dan:unroll-website Dan$ find . -name .gitattributes
[ only results are in different directory tree ]

Это вызвано .gitattributes на один уровень вверх, как указано в ответе ниже.

Когда я делаю od -c в файлах, он показывает \r\n. Я не знаю, что они должны "быть", по-видимому, они должны заканчиваться на \n, и именно поэтому показывает diff. Но я не понимаю, как эти файлы могут быть изменены при проверке даже при autocrlf false.

Что может вызвать git изменение файла при проверке, кроме autocrlf?

4b9b3361

Ответ 1

Эта проблема может быть вызвана текстовой опцией gitattributes https://www.kernel.org/pub/software/scm/git/docs/gitattributes.html

Эта проблема может быть исправлена ​​путем временного редактирования вашего файла .gitattributes в папке проекта.

изменить * text=auto на #* text=auto внести необходимые изменения в окончание строк файлов и нажать фиксацию. Затем вы можете включить его снова после внесения изменений или, альтернативно, выбрать один из других вариантов, которые могут лучше соответствовать вашему проекту.

Ответ 2

У меня не было файла gitattributes, как указано в принятом ответе, это была проблема с правами доступа к файлам в моем случае. Чтобы узнать, является ли это вашей проблемой, проверьте отличия измененных файлов от git diff, например:

git diff path/to/file.html

Если единственное изменение, которое вы видите, это старый режим/новый режим, вероятно, проблема с разрешениями. Вы можете сообщить git игнорировать изменения разрешения файла, используя:

git config core.filemode false

или

git config --global core.filemode false

(в зависимости от того, как вы используете git).

Недавно я переключился с использования Cygwin git на git для Windows по соображениям производительности, плюс, чтобы TortoiseGit работал правильно, это может быть причиной отказа в моем случае.

Литература: