Есть несколько проблем, которые могут вызвать это поведение:
Нормализация окончания строки
У меня тоже были такие проблемы. Все сводится к тому, что git автоматически конвертирует crlf в lf. Обычно это вызвано смешанным окончанием строки в одном файле. Файл нормализуется в индексе, но когда git затем снова денормализует его, чтобы сравнить его с файлом в рабочем дереве, результат будет другим.
Но если вы хотите это исправить, вы должны отключить core.autocrlf , изменить все окончания строки на lf, а затем включить его снова. Или вы можете отключить его, выполнив:
git config --global core.autocrlf false
Вместо core.autocrlf , вы также можете рассмотреть возможность использования .gitattribute
файлов. Таким образом, вы можете быть уверены, что все, кто использует репо, используют одни и те же правила нормализации, предотвращая попадание концов смешанных строк в репозиторий.
Также рассмотрите возможность установки core.safecrlf для предупреждения, если вы хотите, чтобы git предупреждал вас, когда будет выполнена необратимая нормализация.
git manpages произнесите это:
Конверсия CRLF имеет небольшой шанс
порчи данных. autocrlf = true будет
конвертировать CRLF в LF во время коммита и
LF в CRLF во время оформления заказа. Файл
который содержит смесь LF и CRLF
до того, как коммит не может быть воссоздан
по мерзавцу Для текстовых файлов это
что нужно сделать: исправляет строку
окончания такие, что у нас есть только НЧ линия
окончания в хранилище. Но для
бинарные файлы, которые случайно
классифицируется как текст, конвертация может
поврежденные данные.
Нечувствительные к регистру файловые системы
В нечувствительных к регистру файловых системах, когда в хранилище находится одно и то же имя файла с другим регистром, git пытается извлечь оба, но в файловой системе появляется только одно. Когда git пытается сравнить второй, он сравнивает его с неверным файлом.
Решением может быть либо переключение на файловую систему без учета регистра, но в большинстве случаев это невозможно, либо переименование и фиксация одного из файлов в другой файловой системе.