Git-файлы, измененные после извлечения, сброса --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 и именно поэтому разница показывает. Но я не понимаю, как эти файлы могут быть изменены при оформлении заказа даже при autocrlf ложный.

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

2 ответа

Решение

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

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

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

У меня не было файла 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 работает должным образом, возможно, по этой причине в моем случае были сброшены разрешения.

Рекомендации:

  1. Как удалить файлы с надписью "старый режим 100755 новый режим 100644" из неустановленных изменений в Git?
Другие вопросы по тегам